之前统计系统到需要亿级的用户设备id去重,统计新增用户,直接使用clickhouse join由于笛卡尔积的原因导致效率偏低,早有听闻hbase rowkey的效率比较高,就想到了使用它来进行去重,把需要去重的键值连起来,每条数据查重理论上复杂度为1,当成一个比较大的redis来使用。

使用起来效果非常惊人,Result[] get(List<Get> var1) 这个函数提供了大量rowkey的查询,10万条数据几乎不到1s的时间,使用java进行求差集的效率也很不错,整体每天的数据批量去重只需要几秒钟就能完成

如果时间差距过大,采取每天轮询的方式还是很不错的,保证每个批次的数据量不会太大,降低hbase的数据吞吐压力,曾经尝试每次查询200万的数据都是没有问题,只是数据传输的时间会长一些

当然也可以用来redis来做这个处理,但是redis可能持久化存储这么多数据是一件比较麻烦的事情,而hbase本来就有海量存储的这个属性,不得不说比hive快了好多