【问题标题】:HBase row key design for reads and updates用于读取和更新的 HBase 行键设计
【发布时间】:2014-10-11 21:51:34
【问题描述】:

我试图了解为我的 HBase 表设计密钥的最佳方式。

我的用例:

现在的结构

个人ID |批次日期 |个人JSON

当修改有关人员的某些内容时,会将新的 PersonJSON 和新的批处理日期插入 Hbase 以更新旧记录。每 4 小时扫描一次所有被修改的人,然后将其推送到 Hadoop 进行进一步处理。

如果我的密钥只是 personID,它非常适合更新数据。但是我的表现很糟糕,因为我必须在 BatchData 列上添加一个过滤器来扫描所有大于批处理日期的行。

如果我的键是像 BatchDate|PersonID 这样的复合键,我可以在行键上使用 startrow 和 endrow 并获取所有已修改的行。但是我会有很多重复的,因为密钥不是唯一的并且不能再更新一个人。

row+col (personid+batchdate) 上的布隆过滤器是一个选项吗?

感谢任何帮助。 谢谢, 阿布舍克

【问题讨论】:

    标签: hadoop hbase bloom-filter


    【解决方案1】:

    除了以 PersonID 作为行键的表之外,听起来您还需要一个 dual-write secondary index,以 BatchDate 作为行键。

    另一个选项是Apache Phoenix,它提供对二级索引的支持。

    【讨论】:

      【解决方案2】:

      我通常做两步: 创建表一,键是 BatchDate+PersonId 的组合,值可以为空。 像往常一样创建表二。 Key 是 PersonId 值是整个数据。

      日期范围查询:先查询表1获取PersonId,然后使用Hbase批量获取API批量获取数据。它会非常快。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-09
        • 1970-01-01
        • 1970-01-01
        • 2013-07-21
        • 1970-01-01
        相关资源
        最近更新 更多