hadoop mr 输出需要导入hbase的话最好先输出成HFile格式, 再导入到HBase,因为HFile是HBase的内部存储格式, 所以导入效率很高,下面是一个示例
1. 创建HBase表t1
- hbase(main):157:0* create 't1','f1'
- >
2.写MR作业
HBaseHFileMapper.java
- package com.test.hfile;
- immutableBytesWritablenew
HBaseHFileReducer.java
- package com.test.hfile;
- value""
- valuevalues
- kvcreateKeyValue
- // str格式为row:family:qualifier:value 简单模拟下
- strstrs
- <4
- rowstrs
- familystrs
- qualifierstrs
- valuestrs
HbaseHFileDriver.java
- package com.test.hfile;
- confnew
- otherArgsnew
- jobnew
- /home/yinjie/input"));
- /home/yinjie/output"));
- HBASE_CONFIGnew
- cfgnew
- tableName"t1"
- htablenew
/home/yinjie/input目录下有一个hbasedata.txt文件,内容为
- [root@localhost input]# cat hbasedata.txt
将作业打包,我的到处路径为/home/yinjie/job/hbasetest.jar
提交作业到hadoop运行:
- [root@localhost job]# hadoop jar /home/yinjie/job/hbasetest.jar com.test.hfile.HbaseHFileDriver -libjars /home/yinjie/hbase-0.90.3/hbase-0.90.3.jar
作业运行完毕后查看下输出目录:
- [root@localhost input]# hadoop fs -ls /home/yinjie/output
OK, 已经生成以列族f1命名的文件夹了。
接下去使用Bulk Load将数据导入到HBbase
- [root@localhost job]# hadoop jar /home/yinjie/hbase-0.90.3/hbase-0.90.3.jar completebulkload /home/yinjie/output t1
导入完毕,查询hbase表t1进行验证
- hbase(main):166:0>
- columnf1timestamp1314591150788valuevalue1
- columnf1timestamp1314591150814valuevalue2
- columnf1timestamp1314591150815valuevalue3
数据已经导入!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。