排序规则
rowkey从高位到低位依照ASCII码表排序;如A排在a前面,a排在aaab前面;- 如果
rowkey一样,按照column family:qualifier排序; - 如果
column family:qualifier一样,按照时间戳排序;
充分利用rowkey会排序特性
- 如果热点数据的
rowkey前缀一样,则很容易被存储在同一RegionServer上,这样就会造成访问的性能瓶颈; rowkey前缀提供一个随机字符串,可以更好的分布在集群中,但是失去了排序特性;rowkey应该设计的精简,过长会加长硬盘和网络IO的开销.
rowkey排序
scan返回的数据是按照rowkey排序;API可以设置StartRow、StopRow查询范围内数据;
如rowkey是时间日期格式,以下可以查询2020年的数据:
Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes("20200101"));
scan.setStopRow(Bytes.toBytes("20210101"));
注意[
StartRow,StopRow)左闭右开.
ASCII编码
