1,需求:已知空气监测数据在hbase中存储,要求按照时间,查询citycode为110000(北京)一个月的数据,数据为每日的监测数据
ID ,CITYCODE,SO2 ,CO,NO2 ,O3, PM10,PM2_5,AQI,MEASURE, TIMEPOINT
13110000020141120, 110000,31,3.939,141,8,368,301,351,6,2014-11-20
5110000020150108, 110000,53,3.305,101,12,176,143,190,4,2015-01-08
key值设计规则:
String yearMoth= "201411"; //年月
String time="20141120"; //年月日
String citycode="1100000"; //城市编码
//hbase 为20个分区,数据进入hbase的分区规则如下
int region=Math.abs((yearMoth+citycode).hashCode())%20; //结果:8
//hbase的key值为
String key =region+citycode+time;
这样设计key的好处是:同一个城市,每个月的数据的分区相同,即region相同,只需要设置startRowkey与endRowKey即可
例如 查询北京 2014 年 11 月的数据
startRowkey:13110000020141100
endRowkey: 13110000020141200 即可