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 更新用例的主要内容,如果未能解决你的问题,请参考以下文章

Hbase 更新用例

如何编写测试用例

UML(统一建模语言)

Linux文件系统的用例建模

设计模式 用例图之二

测试文档