HBase FuzzyRowFilter忽略扫描开始/停止行

时间:2019-04-06 10:05:15

标签: hbase cloudera

在基于Cloudera的HBase部署上运行一些测试代码时,我遇到了这个奇怪的问题。假设这些是我的行键(我实际行键结构的简化版本):

a_1
a_2
a_3
b_1
b_2
b_3
c_1
c_2
c_3

然后我用start,stop = b_2,c_2(独占)运行扫描,得到以下行:

b_2
b_3
c_1

当我为“?_2”添加一个模糊过滤器以保持相同的开始-停止位置时,它似乎忽略了开始-停止位置并返回以下行:

a_2
b_2
c_2

我希望:

b_2

因为a_2和c_2不在我的扫描范围之内。

现在这才变得有趣起来,我在PC上安装了单独的伪分布式HBase v 2.0.4,在此设置下它可以正常工作!唯一的区别是HBase版本和我的安装在群集上不起作用。

所以我试图找出为什么会发生这种情况,我有几个问题:

  • 我以为FuzzyRowFilter应该尊重起止行是我的错吗?
  • 难道仅仅是我的集群HBase版本中的错误? (Cloudera)
  • 是否可以将FuzzyRowFilter作为全表扫描启动,并且更高版本对其进行了演变以使用该范围?请注意,我在HBase Jira中搜索了一条线索,但是找不到与此相关的问题。我也找不到用于检查范围正确性的FuzzyRowFilter的任何单元测试用例。测试用例都具有完整的Scan(),没有范围。
  • 这可能是由于我不知道的某些集群部署复杂性导致的。 (我不这么认为,但是..)

谢谢。

1 个答案:

答案 0 :(得分:0)

这不是一个确切的答案,但是我将HBase 2.0.2部署到了我的环境中,并且现在可以使用了。我真的希望我能了解发生了什么,但我不能。也许是由于过时的版本导致的服务器-客户端版本不匹配,因为当时我正在使用多个版本。至少我读了足够多的HBase代码来回答我的一个原始问题,过滤器应该尊重扫描的起止行。

相关问题