【问题标题】:HBase Data only in Key + compound key & wildcards仅在键 + 复合键和通配符中的 HBase 数据
【发布时间】:2012-10-09 19:09:34
【问题描述】:

这是我的问题:

1) 您是否尝试将所有数据仅放在行键中?我有非常小的数据行(但数百万行),需要将更多的数据实体组合在一起以使密钥独一无二,所以我的想法是使用我需要存储在 HBase 中的所有内容创建一个复合密钥。您是否尝试过,您认为瓶颈/问题可能是什么?应该考虑什么?我可以想象这将需要更多的 RAM,因为我将有更多的东西放入布隆过滤器中。

2) 我只是想对此进行确认,因为我无法以这种形式找到它。就我获得 HBase 而言,如果我有一个复合键,可以说: 键:k1_k2_x

我可以进行范围扫描以获取特定 k1 的所有 k2 条目,例如: 扫描 "t1",{STARTROW=>"k1_"}

但是没有办法使用通配符并以某种方式获取特定 k2 的所有 k1 条目。我需要一个 map/reduce 作业或 Hive 或过滤器,对吧?

【问题讨论】:

    标签: hbase


    【解决方案1】:

    1) 将所有数据放在行键中非常好。 HBase 旨在支持这样的用例。

    2) 如果您想在 k1 和 k2 上进行范围扫描(或“通配符扫描”),我建议将数据存储在两个表中,如下所示:

    • table1: k1_k2_x
    • table2:k2_k1_x

    这是重复数据,但对于执行您想要的查询将非常有效。

    这是与 HBase 的权衡之一:您获得了非常大的扩展能力,但失去了 RDBMS 功能,并且需要通过行键结构找出插入/查询的有效方法。

    【讨论】:

    • 谢谢 Suman,关于 2) 我曾考虑这样做,但在我的情况下,放入 HBase 的数据需要两倍于树的磁盘空间,就像 HDFS 中的那样,所以我不确定我是否能负担得起这。但是谢谢,您的回复确保我的想法是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2013-05-26
    • 2015-06-12
    相关资源
    最近更新 更多