【发布时间】:2019-07-23 13:52:42
【问题描述】:
我正在使用 Java 查询具有如下键的 hbase 表:
a.1
b.1
b.2
c.1
c.2
我想搜索以 a 或 b 开头的任何内容,并且只想为前缀返回一个唯一值。所以我的 api 会返回一个列表:[a, b],而不是[a,b,b]。
到目前为止,我的方法是
在
a和c之间创建一个Scan。遍历每个结果,对
.进行拆分使用
Set确保我没有任何重复项将
Set返回为List
这很好用,除了这种情况:
a.1
b.1
b.2
...
b.10000000
c.1
在这种情况下,我有太多要遍历的键,我不在乎,因为我已经有一个 b。我的应用程序在完成之前超时。
我的问题是,我可以在扫描中应用过滤器以仅获取一系列前缀的唯一值吗?我可以告诉 Hbase 跳到下一场比赛而不必创建新的扫描吗?我宁愿不创建一个只包含我正在寻找的值的新表,因为应用程序的另一部分正在使用整个密钥,所以这两个方面都很有价值。
【问题讨论】:
-
要求数据库对选择执行逻辑聚合操作很好,但这似乎是一个定制的要求。
-
您是否有任何理由不能使用现有的行过滤功能来完成此操作?请确保您已阅读所有 HBase 文档并解释您尝试过的内容以及为什么它不起作用。