【发布时间】:2017-04-14 13:44:57
【问题描述】:
我正在 HBase Java 客户端/Thrift/REST 接口上运行一些性能测试。 我有一个名为“Airline”的表,它有 500K 行。 我通过 4 个不同的 Java 程序从表中获取所有 500K 行。 (使用 JAVA 客户端、Thrift、Thrift2 和 REST)
以下是不同提取大小的性能数据。 对于所有这些,批量大小设置为 100000
[Table which shows the performance numbers. All times are in ms][1]
我可以看到,当我们在 REST、Thrift 和 Thrift2 的情况下增加提取大小时,性能会有所提高。
但是使用 Java API,我看到了一致的性能,无论获取大小如何。 为什么获取大小在 JAVA 客户端中没有影响?
这是我的 Java 程序的 sn-p
Table table = conn.getTable(TableName.valueOf("Airline"));
Scan scan = new Scan();
ResultScanner scanner = table.getScanner(scan);
for (Result[] result = scanner.next(fetchSize); result.length != 0; result = scanner.next(fetchSize))
{ - 处理行 }
有人可以帮助我吗?我是否使用错误的方法/类来通过 JAVA 客户端获取数据。
【问题讨论】:
-
您的问题中的信息太少,无法猜测可能导致差异的原因。您使用的 HBase 版本是什么?您使用默认配置还是自定义配置?您是否为扫描仪设置了任何“缓存”?