HBase数据仅在Key+;复合键&;通配符

HBase数据仅在Key+;复合键&;通配符,hbase,Hbase,以下是我的问题: 1) 您是否尝试将所有数据仅放在行键中?我有非常小的数据行(但有数百万行),需要将更多的数据实体组合在一起以使密钥唯一,因此我的想法是使用需要存储在HBase中的所有内容创建一个复合密钥。你试过了吗?你认为瓶颈/问题是什么?应该考虑什么?我可以想象,这将需要更多的内存,因为我将有更多的东西放入bloom过滤器 2) 我只是想确认一下,因为我在这张表格里找不到。就我得到的HBase而言,如果我有一个复合键,就说: 关键字:k1_k2_x 我可以进行范围扫描,以获取特定k1的所有k

以下是我的问题:

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

2) 我只是想确认一下,因为我在这张表格里找不到。就我得到的HBase而言,如果我有一个复合键,就说: 关键字:k1_k2_x

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

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

1)将所有数据放在行键中完全可以。HBase旨在支持这样的用例

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

  • 表1:k1_k2_x
  • 表2:k2_k1_x
这是重复的数据,但对于执行所需的查询类型非常有效

这是HBase的一个折衷方案:您获得了非常大的扩展能力,但失去了RDBMS功能,需要找到通过行键结构插入/查询的有效方法。

感谢Suman,大约2)我考虑过这样做,但在我的情况下,HBase中的数据占用的磁盘空间是HDFS中的两到三倍,所以我不确定我能负担得起这样做。但是谢谢,你的回答让我确信我的想法是正确的。