我有一个HBase表,我正在写行键,如:
<prefix>~1
<prefix>~2
<prefix>~3
...
<prefix>~9
<prefix>~10
Run Code Online (Sandbox Code Playgroud)
HBase shell上的扫描给出了一个输出:
<prefix>~1
<prefix>~10
<prefix>~2
<prefix>~3
...
<prefix>~9
Run Code Online (Sandbox Code Playgroud)
如何设计行键以使带键的行<prefix>~10最后?我正在寻找一些推荐的方法或更方便的设计HBase行键的方法.
Tar*_*riq 21
应该如何设计行键,以便键〜10的行最后?
您可以通过这种方式查看扫描输出,因为无论插入顺序如何,HBase中的rowkeys都按字典顺序排序.这意味着它们根据字符串表示进行排序.请记住,HBase中的rowkeys被视为具有字符串表示的字节数组.最低顺序rowkey首先出现在表格中.这就是为什么10出现在2之前,依此类推.请参阅此页面上的" 行 "部分以了解有关此内容的更多信息.
当您使用零填充整数时,它们的自然顺序在按字典顺序排序时保持完整,这就是为什么您看到扫描顺序与插入数据的顺序相同的原因.为此,您可以按照@shutty的建议设计行键.
我正在寻找一些推荐的方法或更方便的设计HBase行键的方法.
为了设计出好的设计,需要遵循一些通用的指导原则:
有关rowkey设计的更多信息,请参阅此链接.
HTH
HBase按字典顺序存储rowkeys,因此您可以尝试将此模式与固定长度的rowrey一起使用:
<prefix>~0001
<prefix>~0002
<prefix>~0003
...
<prefix>~0009
<prefix>~0010
Run Code Online (Sandbox Code Playgroud)
请记住,您还应该使用随机前缀来避免区域热点(当单个区域接受大多数写入时,而其他区域处于空闲状态).
对于 hbase 来说,单调递增的键并不是一个好的模式。您可以在这里阅读更多信息: http ://hbase.apache.org/book/rowkey.design.html
还有一个OpenTSDB的链接可以解决这个问题。
| 归档时间: |
|
| 查看次数: |
8663 次 |
| 最近记录: |