2

以下是我的问题:

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

2) 我只是想对此进行确认,因为我在这个表格中找不到它。就我获得 HBase 而言,如果我有一个复合键,可以说:key: k1_k2_x

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

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

4

1 回答 1

1

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

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

  • 表 1:k1_k2_x
  • 表2:k2_k1_x

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

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

于 2012-10-18T19:32:23.573 回答