不使用 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。
要通过 Put
s 加载数据(即非批量加载):
$ 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
我在 HDFS
中有 .csv
个文件。我想在不使用 Pig
脚本的情况下将它们加载到 HBASE
表中。
还有其他方法吗?
可能有几种方法。但有些选项如下所示。
选项 1:简单的方法是 ImportTsv
ImportTsv
是一个将 TSV 格式的数据加载到 HBase 的实用程序。它有两种不同的用法:通过 Puts 将 HDFS 中的 TSV 格式的数据加载到 HBase 中,以及通过 completebulkload 准备要加载的 StoreFiles。
要通过 Put
s 加载数据(即非批量加载):
$ 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