问题一:hbase证件号+日期 又查询单条,有统计一天的量
需求:有一张数据表,其中包含手机号码字段。
1. 查询一段时间内固定号码的所有数据 2. 查询一段时间内所有数据。
分析:HBase要想查询快速,只能从rowKey上下手,
解决思路1:rowKey=phoneNum+时间 可以实现目标1,设置StartRow ;
在建立一个scan对象后,我们setStartRow(00000120120901),setEndRow(00000120120914)。
这样,scan时只扫描userID=000001的数据,且时间范围限定在这个指定的时间段内
但是目标2很难实现,RowFilter的SubstringComparator(子串匹配)话全表扫描,很慢,效率很低
rowKey=时间+phoneNum 可以实现目标2,但是目标1很难实现,
且数据量越来越大可能导致热点问题。
解决思路1:牺牲空间换时间,写数据时同时写入两张表,内容一样,只是一张表rowKey=phoneNum+时间,另一张表rowKey=时间+phoneNum。数据量太大,占用空间太大,浪费资源,不可取
解决思路2:牺牲部分空间部分时间,两张表,
一张全量表,rowKey=phoneNum+时间&