HBase 对 RowKey 中通配符的支持

Pra*_*ant 5 hbase

我想知道 HBase 是否支持 RowKey 扫描的通配符。类似于:

select * from TABLE where KEY like '%SEARCH_KEY%';
Run Code Online (Sandbox Code Playgroud)

据我所知,如果我们对行键的前缀有一定的了解,我们可以使用部分键扫描(并且 HBase 在该扫描方面非常有效)。但是,如果我们没有信息前缀(意味着搜索键可能位于 RowKey 中的任何位置),那么 Hbase 必须运行全表扫描,对吗?

另外,如何在 HBase 中形成这样的查询(代码或通过 shell)?

Sum*_*man 4

您只能执行基于前缀的行键扫描。

假设您有如下数据:

aaa_001
aaa_002
aab_001
aac_001
baa_001
...
zzz_001
Run Code Online (Sandbox Code Playgroud)

使用HappyBase,您可以编写这样的代码来获取 aaa*

for key in table.scan(row_prefix="aaa"):
  print key
Run Code Online (Sandbox Code Playgroud)

将打印

aaa_001
aaa_002
Run Code Online (Sandbox Code Playgroud)

而这段代码:

for key in table.scan(row_prefix="aa"):
  print key
Run Code Online (Sandbox Code Playgroud)

会给你这个:

aaa_001
aaa_002
aab_001
aac_001
Run Code Online (Sandbox Code Playgroud)

因此,您可以进行基于前缀的匹配,但不能进行基于后缀的匹配。希望这有用。