我在hbase中的行键是不同长度的数字,如1,2,3 ….. 32423480,32423481 ..
我用的时候
scan 'table' {STARTROW => '1', ENDROW => '3'}
扫描表,我只想要行1,2,3的结果,但它返回所有以1,2,3开头的行,如1003423,200034 ..
是否可以使用数字方式过滤行键范围使用hbase shell或java api?
谢谢
解决方法:
看起来你的HBase表中的键存储为字符串.这意味着像1,2,3等数字位于表的不同部分,并且它们之间还有许多其他键.所以问题的答案是:在单一扫描操作的帮助下,无法扫描所需的数值范围.
1)更改密钥的架构.只需将您的密钥转换为整数并将其存储在HBase中.这样,您的密钥将存储为4个元素的字节数组(如果使用长整数,则存储为8个元素),并以完全数字方式在HBase中进行排序.此模式具有内存效率,但不支持shell,因为在HBase shell中,默认情况下只能键入字符串表示的键.如果你想要外壳友好但不是那么有效的内存方式,你可以使用jeff答案中提供的解决方案.
2)如果您不想将所有数据移动到新的密钥架构,则可以使用Get操作而不是Scan.只需对您范围内的每个元素调用get操作.显然,这种方法比一次扫描效率低得多,但它可以让您在没有数据转换的情况下获得所需的所有数据.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。