0%

rowkey字典排序

排序规则

  • rowkey从高位到低位依照ASCII码表排序;如A排在a前面,a排在aa ab前面;
  • 如果rowkey一样,按照column family:qualifier排序;
  • 如果column family:qualifier一样,按照时间戳排序;

充分利用rowkey会排序特性

  1. 如果热点数据的rowkey前缀一样,则很容易被存储在同一RegionServer上,这样就会造成访问的性能瓶颈;
  2. rowkey前缀提供一个随机字符串,可以更好的分布在集群中,但是失去了排序特性;
  3. rowkey应该设计的精简,过长会加长硬盘和网络IO的开销.

rowkey排序

  1. scan返回的数据是按照rowkey排序;
  2. API可以设置StartRowStopRow查询范围内数据;

rowkey是时间日期格式,以下可以查询2020年的数据:

Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes("20200101"));
scan.setStopRow(Bytes.toBytes("20210101"));

注意[StartRow,StopRow)左闭右开.

ASCII编码

ASCII