Hadoop 将键值对数据批量加载到HBASE中

Hadoop 将键值对数据批量加载到HBASE中,hadoop,hbase,bigdata,nosql,Hadoop,Hbase,Bigdata,Nosql,我正在评估HBASE是否能够处理每行具有可变列数的非常广泛的数据集。在原始形式中,“我的数据”有一个变量列表,其中包含每行的参数名称和值。在其转换形式中,它以键值对的形式提供 我想将此数据加载到HBASE中。将经过处理的键值对数据转换为单独的“put”语句以获取数据非常容易。然而,我需要大量加载,因为我有1000个列和数百万行,导致数十亿个单独的键值对,需要数十亿个“put”语句。此外,列(a、b、c、d等)的列表在时间之前并不完全已知。到目前为止,我调查了以下选项: importtsv:无法

我正在评估HBASE是否能够处理每行具有可变列数的非常广泛的数据集。在原始形式中,“我的数据”有一个变量列表,其中包含每行的参数名称和值。在其转换形式中,它以键值对的形式提供

我想将此数据加载到HBASE中。将经过处理的键值对数据转换为单独的“put”语句以获取数据非常容易。然而,我需要大量加载,因为我有1000个列和数百万行,导致数十亿个单独的键值对,需要数十亿个“put”语句。此外,列(a、b、c、d等)的列表在时间之前并不完全已知。到目前为止,我调查了以下选项:

  • importtsv:无法使用,因为这要求数据在导入固定的已知列集之前从行到列进行数据透视
  • 配置单元生成HFile:此选项也要求提前指定列名,并将配置单元表中的每一列映射到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
处理后的数据格式:

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

您几乎肯定希望使用客户M/R作业+增量加载(也称为批量加载)

一般程序将是:

  • 提交已使用HFileOutputFormat配置的M/R作业。configureIncrementalLoad
  • 映射HBase的原始数据和写入put
  • 使用以下命令将作业的输出加载到表中:

    sudo-u hdfs hdfs dfs-chown-R hbase:hbase/path/to/job/output

    sudo-u hbase hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles/path/to/job/output表名

  • 有很多方法可以从java加载,但这意味着模拟HBase。这里棘手的部分是确保文件由HBase拥有,并且运行增量加载的用户也是HBase。这篇文章更多地讨论了这些细节


    总的来说,我建议大家看看这一点,它似乎涵盖了流程的基本知识。

    您几乎肯定希望使用客户M/R作业+增量加载(也称为批量加载)

    一般程序将是:

  • 提交已使用HFileOutputFormat配置的M/R作业。configureIncrementalLoad
  • 映射HBase的原始数据和写入put
  • 使用以下命令将作业的输出加载到表中:

    sudo-u hdfs hdfs dfs-chown-R hbase:hbase/path/to/job/output

    sudo-u hbase hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles/path/to/job/output表名

  • 有很多方法可以从java加载,但这意味着模拟HBase。这里棘手的部分是确保文件由HBase拥有,并且运行增量加载的用户也是HBase。这篇文章更多地讨论了这些细节

    总的来说,我建议大家看一看,这似乎涵盖了流程的基本知识