不使用 Pig 脚本从 HDFS 加载 HBase 中的数据

Load data in HBase from HDFS without using Pig Script

我在 HDFS 中有 .csv 个文件。我想在不使用 Pig 脚本的情况下将它们加载到 HBASE 表中。

还有其他方法吗?

可能有几种方法。但有些选项如下所示。

选项 1:简单的方法是 ImportTsv

ImportTsv 是一个将 TSV 格式的数据加载到 HBase 的实用程序。它有两种不同的用法:通过 Puts 将 HDFS 中的 TSV 格式的数据加载到 HBase 中,以及通过 completebulkload 准备要加载的 StoreFiles。

要通过 Puts 加载数据(即非批量加载):

$ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c <tablename> <hdfs-inputdir>

为批量加载生成 StoreFiles:

$ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c -Dimporttsv.bulk.output=hdfs://storefile-outputdir <tablename> <hdfs-data-inputdir>

可以通过第 14.1.10 节“CompleteBulkLoad”将这些生成的 StoreFiles 加载到 HBase 中。

例子hbase> hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=, -Dimporttsv.columns="c1,c2,c3...." hdfs://servername:/tmp/yourcsv.csv

选项 2:自定义 map-reduce 方式

编写一个 mapreduce 程序和 csv 解析器以防你需要解析复杂的 csv

see example here