hadoop - 用于读取和更新的 HBase 行键设计

标签 hadoop hbase bloom-filter

我试图了解为我的 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/

相关文章:

algorithm - 布隆过滤器实现如何保持清洁?

hadoop - Hadoop xml文件的配置

hadoop - 在 Amazon EMR 上配置 Flink Rest API

amazon-web-services - 如何在Amazon Spark集群上启动4个实例?

bash - 如何让 HBase 等到 HDFS 准备好后才开始?

java - 如何使用布隆过滤器的消息摘要获取 int 类型哈希

hadoop - pig udf计算博客中的时间差

database - 为什么HBase需要HDFS?

hadoop - HDFS 小文件

redis - Redis : Bloom filters or HyperLogLog data structure 之上的 URL 过滤