分享

Phoenix使用MapReduce加载大批量数据

wuyufei 发表于 2015-11-27 13:21:19 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 1 13886
问题导读:

1.说明
2.创建表
3.添加测试数据
4.执行MapReduce




1. 说明------------------------------------------------------------------------------------------------------------------------------
在实际应用场景中可以会有一些格式比较规整的数据文件需要导入到HBase,Phoenix提供了两种方法来加载CSV格式的文件phoenix的数据表。一种是使用单线程的psql工具进行小批量数据加载的方式,一种是使用MapReduce作业来处理大批量数据的方式。第一种方式比较简单这里就不介绍了,想了解的可以参考官方文档。
2. 创建表

------------------------------------------------------------------------------------------------------------------------------

在phoenix的CLI界面创建user表。

[mw_shl_code=bash,true]create table user (id varchar primary key,account varchar ,passwd varchar);[/mw_shl_code]

3. 添加测试数据

------------------------------------------------------------------------------------------------------------------------------

【PHOENIX_HOME】目录下创建data_import.txt,内容如下:

001,google,AM
002,baidu,BJ
003,alibaba,HZ
4. 执行MapReduce

------------------------------------------------------------------------------------------------------------------------------

【PHOENIX_HOME】目录下执行MR作业(命令的使用跟Phoenix的版本有关)。

[mw_shl_code=shell,true]$ HADOOP_CLASSPATH=/usr/local/cdh-5.2.0/hbase-0.98.6/lib/hbase-protocol-0.98.6-cdh5.2.0.jar:/usr/local/cdh-5.2.0/hbase-0.98.6/conf hadoop jar phoenix-4.2.2-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool -t user -i file:///usr/local/cdh-5.2.0/phoenix-4.2.2/data_import.txt -z 192.168.187.128,192.168.187.129,192.168.187.130:2181[/mw_shl_code]

参数含义如下表:

20150510190824277.png

高能预警:hbase-protocol-0.98.6-cdh5.2.0.jar这个jar包是与HBase的版本有关的,如果是其他版本的HBase请自行替换。

数据文件的路径会默认读取HDFS的文件,这里强制添加前缀file:///指定为本地文件路径了,但是MR执行的过程中还是报错了说找不到文件路径:

[mw_shl_code=shell,true]Error: java.io.FileNotFoundException: File file:/usr/local/cdh-5.2.0/phoenix-4.2.2/data_import.txt does not exist
at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:524)
at org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:737)
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:514)
at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:398)
at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.(ChecksumFileSystem.java:140)[/mw_shl_code]

但是最后数据却被成功加载到phoenix中。

20150510191212034.png

最终将测试数据data_import.txt放到了HDFS的/phoenix/test/目录下,使用如下命令执行后全程无任何报错。

[mw_shl_code=shell,true]al/cdh-5.2.0/hbase-0.98.6/conf hadoop jar phoenix-4.2.2-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool -t user -i /phoenix/test/data_import.txt -z 192.168.187.128,192.168.187.129,192.168.187.130:2181[/mw_shl_code]

该作业会被提交到YARN由ResourceManager进行资源分配

20150510191620296.png








已有(1)人评论

跳转到指定楼层
zhanggl 发表于 2016-2-16 15:59:20
我用phoenix4.6 版本就出现 ERROR mapreduce.CsvBulkLoadTool: Error Wrong FS: file:/home/hadoop/tmp/partitions_9cbf23f3-63c8-450a-bf0b-1e2cfc5b274a,  异常。你没有出现过这个吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条