HBase 写:batch 和 put(List<Put>) 哪个性能更好?

HBase write: which one better on performance, batch or put(List<Put>)?

开始学习HBase写数据流了。我使用 HTableInterface 并且在性能上有问题。只插入 500 行就花了很多时间,我插入的每批 List 将近 500,000 毫秒。

有任何使用 HTableInterface 批量写入 HTable 的示例或建议吗? 我正在使用 HBase 0.94

谢谢

它们本质上是相同的:batch(List<? extends Row> actions, Object[] results) 不仅允许放置,还允许获取、删除、递增... put(List<Put> puts) 只需执行一批放置(它还在客户端验证它们).

您还可以通过禁用 table.setAutoFlush(false)、向 table 发出标准 put 并随后使用 table.flushCommits() 刷新缓冲区来执行批处理。

我不知道你的行的大小,但除非它们很大,否则你的配置似乎有某种问题(可能是网络延迟?),即使逐行执行 500 次放置也应该执行一次快很多。