HBase导出CSV格式数据的方法

转自:https://www.cppentry.com/bencandy.php?fid=118&id=187016

本文的测试环境为hbase-0.96.0 + yarn(hadoop-2.0.3-alpha) + pig-0.12.0。在测试前,先创建了一张名为test的hbase表,它内容非常简单,就只有一行数据:

HBase导出CSV格式数据的方法

HBase export工具导出的数据的格式是sequence file。比如,在执行完命令“bin/hbase org.apache.hadoop.hbase.mapreduce.Export test test-output-001”后,hbase会启动一个MapReduce作业,作业完成后会在hdfs上面会生成sequence file格式的数据文件:

HBase导出CSV格式数据的方法

当然,对于这类Sequence file格式的数据文件,HBase是可以直接将它导入到HBase的表里面的。

比如,我们创建另外一张hbase空表,名为test-01。命令为:“create 'test-01','cf'”。此时,表test-01的内容为空。

然后,执行命令“bin/hbase org.apache.hadoop.hbase.mapreduce.Import test-01 test-output-001”,随后hbase会启动一个MapReduce 作业:

HBase导出CSV格式数据的方法

此时,我们可以看到表test-01中已经成功导入了数据:

HBase导出CSV格式数据的方法

如果想从HBase中直接导出CSV格式的数据文件,可以借助Pig。步骤为:

a) 编辑名为ExportHbase.pig的文件:

REGISTER ${HBASE_HOME}/lib/htrace-core-2.01.jar;
REGISTER ${PIG_HOME}/contrib/piggybank/java/piggybank.jar;
x = LOAD 'hbase://test' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('cf:c1');
STORE x INTO 'test-tbl-data.csv' USING PigStorage('$');

b) 执行命令“bin/pig -x mapreduce ExportHbase.pig”,然后Pig会启动一个MapReduce job,执行完毕后会在hdfs上生成CSV格式的数据:

HBase导出CSV格式数据的方法

除了利用Pig,还可以用别的方法从HBase 导出CSV格式的数据:

- 编写Java程序,调用HBase API。

具体方法可以参考http://blog.csdn.net/macyang/article/details/8522677.

- 把HBase生成的Sequence file转化成CSV格式的文件

相关推荐