使用java查找唯一的hbase前缀键

nwsw7zdq  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(395)

我使用java查询带有如下键的hbase表:

  1. a.1
  2. b.1
  3. b.2
  4. c.1
  5. c.2

我想搜索任何以a或b开头的内容,只想为前缀返回一个唯一的值。所以我的api会返回一个列表: [a, b] ,不是 [a,b,b] .
到目前为止,我的方法是
创建 Scan 介于 a 以及 c .
迭代每个结果,在 . 使用 Set 以确保我没有任何复制品
归还 Set 作为一个 List 这可以正常工作,但在这种情况下:

  1. a.1
  2. b.1
  3. b.2
  4. ...
  5. b.10000000
  6. c.1

在这种情况下,我有太多的键需要迭代,我不关心这些键,因为我已经有了一个 b . 我的申请在完成前就要过期了。
我的问题是,是否有一个过滤器,我可以应用在我的扫描,只得到一系列前缀的唯一值?我可以告诉hbase跳过到下一个匹配而不必创建新的扫描吗?我不希望创建一个只包含我要查找的值的新表,因为应用程序的另一部分正在使用整个键,所以这两个方面都很有价值。

blmhpbnm

blmhpbnm1#

看看hbase的 MultiRowRangeFilter . 我想就你的情况来说,你可以试着通过 RowRange 元素,每个元素都可以用足够的粒度限制开始行和停止行标准,以适合您的用例。
https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/multirowrangefilter.html
我还没有用它来评论你的表现,但是考虑到你已经有了一些可以比较的东西,这是值得一试的。

相关问题