Hbase 更新用例
Posted
技术标签:
【中文标题】Hbase 更新用例【英文标题】:Hbase update use case 【发布时间】:2013-08-12 09:07:13 【问题描述】:我有以下 hbase 用例: 一个 Hbase 表,带有一个行键(使用 md5 哈希的组合构建)和 2 个列族。从逻辑上讲,该表存储句子。该表有数亿条记录。
我有一个连接到这个hbase表的webapp,需要根据一些条件随机导出句子。目前,所有这些条件都可以通过使用 rowkey 来查找。 通常,一次导出仅包含几百个句子。重要的限制是,一旦导出了某些段,它们不应出现在任何后续导出中。
所以我的问题与此有关 - 我应该如何确保不会再次导出相同的段?
我应该在每次导出后通过更新标志来“标记”导出的片段吗?这样做的缺点是,在查看哪些段满足我的条件时,我不能只使用行键来识别这些记录,也不能使用那个标志。因此,我需要使用过滤器,我知道这要慢得多。
有没有更好的方法呢?
【问题讨论】:
【参考方案1】:谁为您传递行键?你能确保他发送唯一的行键吗?
如果您不需要导出后的数据。为什么不从 hbase 表中完全删除那句话呢?
如果您对上述两个问题的回答都是“否”,那么除了在您的表中保留一个标志之外别无他法。
【讨论】:
我最终使用了过滤器,因为它们对于我的用例来说似乎运行得足够快。我唯一担心的是,比方说,我有一些行要更新标志。如果没有完成更新(假设需要更新大量行),并且其他一些用户想要导出相同条件的数据怎么办?他会看到所有更新吗?我正在阅读Hbase Acid Semantics,在那里我看到 Hbase 已被读取:“扫描必须反映在构建扫描仪之前提交的所有突变”。这是否意味着我的假设是安全的?以上是关于Hbase 更新用例的主要内容,如果未能解决你的问题,请参考以下文章