我试图了解为我的 HBase 表设计 key 的最佳方法。
我的用例:
现在的结构
人号 |批处理日期 | PersonJSON
当关于这个人的一些事情被修改时,一个新的 PersonJSON 和一个新的 batchdate 被插入到 Hbase 中更新旧记录。每 4 小时扫描一次所有修改过的人,然后将其推送到 Hadoop 进行进一步处理。
如果我的 key 只是 personID,那么它非常适合更新数据。但是我的性能很糟糕,因为我必须在 BatchData 列上添加一个过滤器来扫描所有大于批处理日期的行。
如果我的键是像 BatchDate|PersonID 这样的复合键,我可以在行键上使用 startrow 和 endrow 并获取所有已修改的行。但是我会有很多重复,因为 key 不是唯一的并且不能再更新一个人。
行+列(personid+batchdate)上的布隆过滤器是一个选项吗?
感谢任何帮助。 谢谢, 阿比舍克
最佳答案
除了以PersonID为rowkey的表,听起来还需要一个dual-write secondary index , 以 BatchDate 作为行键。
另一个选项是 Apache Phoenix ,它提供对二级索引的支持。
关于hadoop - 用于读取和更新的 HBase 行键设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26319624/