大数据|HBase导出CSV格式数据的方法

本文的测试环境为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导出CSV格式数据的方法】比如,我们创建另外一张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格式的文件











    推荐阅读