用于读取和更新的hbase行键设计

toiithl6  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(338)

我正在尝试了解为hbase表设计键的最佳方法。
我的用例:
现在的结构
personid | batchdate | personjson
当修改某人的某些内容时,会在hbase中插入一个新的personjson和一个新的batchdate来更新旧记录。每4小时扫描一次所有被修改的人,然后将其推送到hadoop进行进一步处理。
如果我的钥匙只是拟人的话,它很适合更新数据。但是我的性能很差,因为我必须在batchdata列上添加一个过滤器来扫描所有大于批处理日期的行。
如果我的键是batchdate | personid这样的复合键,我可以在行键上使用startrow和endrow,并获取所有修改过的行。但我会有很多重复,因为关键是不唯一的,不能再更新一个人。
行+列(personid+batchdate)上的bloomfilter是一个选项吗?
感谢您的帮助。谢谢,阿披实

wooyq4lh

wooyq4lh1#

我通常会做两个步骤:创建一个表,表的键是batchdate+personid的组合,值可以是空的。像平常一样创建表2。关键是人名值是整个数据。
日期范围查询:先查询表1得到人名,然后使用hbase batch get api按批次得到数据。会很快的。

hzbexzde

hzbexzde2#

除了personid作为rowkey的表之外,听起来还需要一个双写辅助索引,batchdate作为rowkey。
另一个选择是apachephoenix,它提供对二级索引的支持。

相关问题