【问题标题】:Hbase update use caseHbase 更新用例
【发布时间】:2013-08-12 09:07:13
【问题描述】:

我有以下 hbase 用例: 一个 Hbase 表,带有一个行键(使用 md5 哈希的组合构建)和 2 个列族。从逻辑上讲,该表存储句子。该表有数亿条记录。

我有一个连接到这个hbase表的webapp,需要根据一些条件随机导出句子。目前,所有这些条件都可以通过使用 rowkey 来查找。 通常,一次导出仅包含几百个句子。重要的限制是,一旦导出了某些段,它们不应出现在任何后续导出中。

所以我的问题与此有关 - 我应该如何确保不会再次导出相同的段?

我应该在每次导出后通过更新标志来“标记”导出的片段吗?这样做的缺点是,在查看哪些段满足我的条件时,我不能只使用行键来识别这些记录,也不能使用那个标志。因此,我需要使用过滤器,我知道这要慢得多。

有没有更好的方法呢?

【问题讨论】:

    标签: hbase bigdata


    【解决方案1】:

    谁为您传递行键?你能确保他发送唯一的行键吗?

    如果您不需要导出后的数据。为什么不从 hbase 表中完全删除那句话呢?

    如果您对上述两个问题的回答都是“否”,那么除了在您的表中保留一个标志之外别无他法。

    【讨论】:

    • 我最终使用了过滤器,因为它们对于我的用例来说似乎运行得足够快。我唯一担心的是,比方说,我有一些行要更新标志。如果没有完成更新(假设需要更新大量行),并且其他一些用户想要导出相同条件的数据怎么办?他会看到所有更新吗?我正在阅读Hbase Acid Semantics,在那里我看到 Hbase 已被读取:“扫描必须反映在构建扫描仪之前提交的所有突变”。这是否意味着我的假设是安全的?
    猜你喜欢
    • 1970-01-01
    • 2017-12-12
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2018-06-15
    相关资源
    最近更新 更多