【发布时间】:2016-10-18 19:55:06
【问题描述】:
我正在评估 HBASE 以处理每行列数可变的非常宽的数据集。在其原始形式中,我的数据有一个变量列表,其中包含每行的参数名称和值。在其转换后的形式中,它以键值对的形式提供。
我想将此数据加载到 HBASE 中。将我的键值对处理数据转换为单独的“放置”语句以获取数据非常容易。但是我需要批量加载,因为我有 1000 列和数百万行,导致数十亿个单独的键值对,需要数十亿个“put”语句。此外,列 (a,b,c,d,...) 的列表并未提前完全知道。到目前为止,我调查了以下选项:
- importtsv:不能使用,因为这需要提前将数据从行转换为列,并导入一组固定的已知列。
- HIVE 生成 HFile:此选项也需要提前指定列名,并将 hive 表中的每一列映射到 hbase 中的一列。
我唯一的选择似乎是解析一次数据块,将其转换为一组已知列,然后批量加载。这似乎很浪费,因为无论如何 HBASE 都会将其分解为键值对。真的应该有更简单更有效的方式批量加载键值对吗?
原始数据格式:
rowkey1, {a:a1, b:b1}
rowkey2, {a:a2, c:c2}
rowkey3, {a:a3, b:b3, c:c3, d:d3}
处理后的数据格式:
rowkey1, a, a1
rowkey1, b, b1
rowkey2, a, a2
rowkey2, c, c2
rowkey3, a, a3
rowkey3, b, b3
rowkey3, c, c3
rowkey3, d, d3
【问题讨论】:
标签: hadoop hbase bigdata nosql