【发布时间】:2016-09-28 17:38:12
【问题描述】:
请原谅我的无知,但我对 HBase 比较陌生,似乎无法弄清楚。我想在 HBase 中存储以下嵌套的 HashMap:
Map<String, Map<String, Map<String, Double>>>
我似乎无法弄清楚 HBase 表的架构。
Row Index 显然是最外层 Map 中的字符串值。但是,我不认为 HBase 允许嵌套列族(尽管它确实允许每个列族有任意数量的列)
同样从here 的回答中我发现嵌套实体在 HBase 中不能有嵌套实体。
让您了解数据大小:
- 最里面的 Map (
Map<String, Double>) 将只有 3 个键。 - 中间的地图 (
Map<String, Map<String, Double>>) 将有 100 把钥匙。 - 最外层地图 (
Map<String, Map<String, Map<String, Double>>>) 可能有大约 20-3000 万个密钥。
感谢任何帮助。
编辑 1: 基本上,我要存储的数量是针对特定 productId 的,即从特定仓库在本地、区域或国家层面销售了多少数量。
- productId 是最外层 Map 的键。
- warehouseID 是中间 Map 的键。
- local/zonal/national 是最里面地图的关键。
编辑 2: 数据将在映射作业中填充和读取。基本上,对于每个产品 id,warehouseId x (Local/Zonal/National : 我们暂时称它为 saleType) 数量作为另一个操作的输入是必需的。我还考虑将数据以 productId x warehouseId x saleType 粒度存储在 csv 文件中,并从映射作业中读取它
【问题讨论】:
-
停下! :) 问题陈述是什么?您要存储什么(嵌套的哈希图并不能告诉我太多)?您的访问模式是什么?推荐阅读(全部):hbase.apache.org/book.html
-
上面的编辑有一点帮助吗?
-
确实如此。现在,您打算如何读取数据?你希望什么样的手术更常见?另外,到目前为止,您的数据还不算“太大”,您是否探索过其他选择?我正在尝试确定“显然”是否是您问题的根源......
-
数据将在映射作业中填充和读取。基本上,对于每个产品 id,warehouseId x (Local/Zonal/National : 我们暂时称它为 saleType) 数量作为另一个操作的输入是必需的。我还考虑将数据以 productId x warehouseId x saleType 粒度存储在 csv 文件中,并从映射作业中读取。
-
我的 2c 对此:如果您不需要随机访问,那么我可能会放入普通的 hdfs...