3.2.4 数据查询方式2
使用Filter
很方便的进行查询到需要的数据行, 但是需要
实际使用中, 只要 rowKey 设计得当, 完全可以通过startRow, stopRow
方式查询, 不用全表查询, 从而提高查询的效率.
我们原来的rowkey是这样设计的:
0001_110_2018-01-01 11:01:08_120_0120_0
0001_119_2018-01-02 11:01:08_110_0120_0
...
0001
: 分区只和 call1 和通话年月有关
所以, 如果按照顺序来取的话, 我们只能查询到 110 作为主叫, 110 作为被叫无法通过 startRow和endRow
的方式查找出来.
如果当 110 是被叫的时候, 如果把它放在 call1 的位置, 而不是放在 call2 的位置就可以通过startRow和endRow
的方式来查询了.
所以, 可以这样设计:
每当有一条通话记录的时候, 我们可以向 HBase 中插入两条记录:
主叫在 call1 的位置, 被叫在 call2 的位置. flag 置为 0
主叫在 call2 的位置, 被叫在 call1 的位置. flag 置为 1
虽然增加了存储了, 但是能提供查询速度(相比使用过滤器), 就是典型的用