是否有一个聪明的hbase模式来帮助发现丢失的值?

mwecs4sa  于 2021-06-10  发布在  Hbase
关注(0)|答案(1)|浏览(271)

假设hbase表中有数十亿行。此表中的行更改缓慢,这意味着将有新的行键,并且一些行键将被删除。
我每行收到很多活动。但是,很少有行没有与之关联的任何事件。
最后,我要报告尚未收到任何事件的行。
我天真的解决方案是引入一个cf:c,它持有一个标志,每次我看到它的事件时都将标志设置为1。然后对表进行完整扫描,查找缺少列值的行键。这看起来像是一种浪费,因为我将在100亿行中查找一些行键(我们谈论的是100或低1000)。
有没有一种聪明的方法来设计hbase模式,以便快速找到缺少事件的行键(而不必遍历每一行)?

h5qlskok

h5qlskok1#

如果我理解正确,您有一个行键xyyyyzzz1。。。xyyyyzzzzn。有些行有事件,其他行没有事件。 c 是你的旗帜,知道事件是否存在,你有巨大的数据。
hbase的经验法则: RowFilter s总是比列值过滤器更快、更有效(要搜索该标志,需要全表扫描)。
扫描整个表以查找缺少的事件(列值筛选器)的方法将导致全表扫描,而且效率低下。
结论:您必须使用行键过滤器来扫描如此大的表。
所以我建议你把旗子写在行键上。例如:
0--表示没有事件1--是否有事件
xyyyyzzzz1\u 0//没有事件的行
xyyyyzzzz1_1//有事件的行
现在您可以使用模糊行过滤器来捕获丢失的事件行并获取报告。
我回答了你的另一个问题
是否有一个聪明的hbase模式来帮助发现丢失的值?
从我使用hbase的经验来看,没有这样的事情。

相关问题