理解Hbase RowKey的字典排序,以及设计
写点自己的理解和实践。
HBase是三维有序存储的,是指rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度是依照ASCII码表排序的。(比如A排在a前面)
先rowkey升序排序,
rowkey相同则column key升序排序
rowkey、column key相同则timestamp降序排序
====
1、由于Scan是全表扫描,任何时候,在使用Scan一定要加上StartRowKey和StopRowKey,限定扫描的范围。
3333333_
Filter prefilter
3333333_11111
3333333_22212
3333334_
3333333_ startrowkey
3333334_ stoprowkey
2、对于查询前缀的数据,不要去使用过滤器中的前缀匹配过滤器,在我们上面设计的RowKey中,只要对要查询的前缀字段转化为StartRowKey和StopRowKey,一个技巧比如:如果要查询前缀为:<userId>-<date>(具体形式比如为:000001_20170118),我们可以设计StartRowKey为000001_20170118_0以及StopRowKey为000001_20170119(注意:scan的StartRowKey、StopRowKey是左闭又开,所以不会返回这一列)
3、如果考虑网络传输,以及查询的时间,如果只需要特定的列簇信息或者列,可以指定只扫描特定的列簇或者列,可以提高性能。
转载于:https://blog.csdn.net/timchen525/article/details/77120471
https://blog.csdn.net/zhaominpro/article/details/79423328