我有一个分层的行键设计,其中每个字符都是一个字段的 ID(我们使用 4 字节段,但为了便于阅读,我会坚持使用两位数)
例如
00
0000 = 00
000000 的孩子 = 0000
0001 的孩子 = 00
000100 的孩子 = 0001的孩子
我想做一个 hbase shell 查询来返回一个节点的子节点。
现在我有以下
scan 'tableName', STARTROW=>'00',
FILTER=>"PrefixFilter('00') AND RowFilter(=,'regexstring:^00.{1}$')"
它给出了 00 的孩子的列表,即 0000 0001
这里有不止一个问题:
1. 如果我删除 $ 符号,性能会显着提高(在本地 VM 上从 2 秒到 0.2 秒)但我也会得到额外的结果(000000 和 000100,我不需要的结果) . 这种戏剧性的性能下降是否有原因?(因为它应该是缩小列表上的附加过滤器)
2. 有没有办法按行键的长度进行过滤?(然后我可以放弃正则表达式并只使用 startrow/endrow) - 这必须在 hbase shell 中完成。例如 FILTER=>"RowKeyLengthFilter(4)"
3. 我不能在正则表达式字符串中使用单词 (\w) 或数字 (\d),hbase shell 有限制吗?还尝试了 [[:alnum:]] 和 [[:digit:]] (感谢 Yunnosch 的建议)
版本 = 1.1.0.1,r4de7d45cb593f98ae5d020080cbc7116d3e9d9a0,2015 年 5 月 17 日星期日 12:52:10 PDT