排序规则
rowkey
从高位到低位依照ASCII
码表排序;如A
排在a
前面,a
排在aa
ab
前面;- 如果
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
)左闭右开.