【发布时间】:2017-09-21 17:42:17
【问题描述】:
我需要扫描大约 50 列的表,每列包含大约 100 个版本。没什么特别的(this.htable 恰到好处,HTable 和 processor 旨在处理结果行):
final Scan scan = new Scan();
scan.setCaching(1000);
scan.setMaxVersions(Integer.MAX_VALUE);
final ResultScanner rs = this.table.getScanner(scan);
try {
for (Result r = rs.next(); r != null; r = rs.next()) {
processor.processRow(r);
}
} finally {
rs.close();
}
当我尝试在这种方法表中扫描大约 20 x 10^6 行时,我只得到大约 50 x 10^3 行。扫描仪没有特殊配置,HBase 为 0.98.1 (CDH5.1)。我错过了什么?是 HBase 的一些缺点还是我做错了什么?我可以检查什么?我检查了结果大小限制(不是案例),您看到 maxVersions 已配置。谁可以限制此类扫描?
更新
检查返回的Result 实例及其内部Cell 实例的数量与预期结果严重不同。还有一次,表格大约有 20 x 10^6 行,可以通过相同的代码计算,无需最大版本配置。并且返回的 WITH 版本的行数约为 50 * 10^3。
【问题讨论】:
-
Roman,你是否也尝试过扫描
hbase shell中的表?