为什么在HBase中以两种相同的方式进行扫描时却得到两种不同的结果

时间:2019-02-05 04:40:26

标签: java hbase

我正在以两种方式通过Java程序扫描HBase表。
一个来自df-e0,另一个来自{df-df4,df4-df8,df8-dfc,dfc-e0}。这两个结果应该是相同的,但是我以以前的方式(df-e0)获得了额外的行。另外,我同时获得两种版本(相同的键位,但不同的时间戳)。

我用开始和结束行参数扫描hbase的代码如下:

int count = 0;
scan = new Scan(Bytes.toBytes(start), Bytes.toBytes(end));
scanner = keywordHBaseConnection.getKeywordMetaDataTable().getScanner(scan);
for (Result result = scanner.next(); result != null; result = scanner.next()) {
    count++;
}

我尝试了{start-end} = {df-e0}。然后以另一种方式尝试使用{start-end} = {df-df4,df4-df8,df8-dfc,dfc-e0},它们是前一个子集。它们的输出应该完全相同,但事实并非如此。结果有两个问题-
1.以以前的方式,结果中会有更多行。
2.两种方式都有重复的行键(我认为是多个版本)。 (不应该bcz构造函数scan()已经将最大版本限制设置为一个)。

1 个答案:

答案 0 :(得分:0)

尝试强制使用特定版本,例如:

scan.setMaxVersions(1);

在版本 1.2.x 中仍然可行,或者您可以尝试以下操作:

scan.readVersions(1); 

2.x 客户