使用HBase扫描在ScanMetrics中到底countOfRowsFiltered是什么?

时间:2018-09-13 16:48:33

标签: hbase

我有一个要进行大量插入和删除操作的表,我需要使用“扫描”(仅按行键,没有列值)频繁地对其进行扫描。

我注意到Scan延迟随着表中数据量的增加而增加。仔细检查ScanMetrics后,我发现对于大多数延迟较高的扫描,ScanMetrics.countOfRowsFiltered的度量值比我实际请求扫描的行数高很多(我将两者指定为{我设置为.setLimit()的{​​{1}}中的{1}}和Scan中的PageFilter()

FilterList的度量到底代表什么?在我的测试环境中,我永远无法重现所扫描的行数高于我设置的限制的情况,因此,scan始终为零。但是在实际环境中,它通常很高(根据我的计算,这可能是整体扫描延迟逐渐增加的原因。)

我在那里找不到该措施的任何描述。有任何经验,以及如何将其最小化?

我将扫描设置如下:

countOfRowsFiltered

1 个答案:

答案 0 :(得分:1)

我相信我找到了答案:

我仅通过指定Deletes来执行rowKey(即使该行中只有一列)。在这种情况下,将删除标记放在行上,并将该行从所有扫描中排除,并获取该行,但是即使在进行重大压缩后,该行仍会物理存在于基础基础结构中。这样,Scan会花费额外的时间遍历这些已删除的行并过滤掉它们,以准备排除它们的最终结果。

如果Delete经过RowKeyColumnFamilyColumnName的完全限定,则看起来该行仅会从基础基础结构中删除 TimeStamp(其所有列)中。

更多信息:仅进行重大压实似乎还不够。首先,需要对表进行整理,然后进行大写压缩,然后删除的行完全消失,Scan不会花费额外的时间来过滤掉它们。

这比我想的要难...

相关问题