经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » Hadoop » 查看文章
hbase与hdfs的交互
来源:cnblogs  作者:mappler  时间:2019/5/21 9:08:47  对本文有异议
  1. hdfshbase的交互,和写MapReduce程序类似,只是需要修改输入输出数据和使用hbasejavaAPI对其进行操作处理即可

  1. public class HBaseToHdfs extends ToolRunner implements Tool {
  2. private Configuration configuration;
  3. //配置文件需要配置的属性
  4. private static final String HDFS_NAME = "fs.defaultFS";
  5. private static final String HDFS_VALUE = "hdfs://mycluster";
  6. private static final String MAPREDUCE_NAME = "mapreduce.framework.name";
  7. private static final String MAPREDUCE_VALUE = "yarn";
  8. private static final String HBASE_NAME = "hbase.zookeeper.quorum";
  9. private static final String HBASE_VALUE = "qiaojunlong3:2181,qiaojunlong4:2181,qiaojunlong5:2181";
  10. //获取hbase表的扫描对象
  11. private Scan getscan() {
  12. return new Scan();
  13. }
  14. @Override
  15. public int run(String[] args) throws Exception {
  16. getConf();
  17. //获取job实例对象
  18. Job job = Job.getInstance(configuration, "copy_move");
  19. //map/reduce的class链接
  20. job.setMapperClass(hbase_To_Hdfs.class);
  21. job.setMapOutputKeyClass(Text.class);
  22. job.setMapOutputValueClass(NullWritable.class);
  23. //设置输入输出
  24. //由hbase导数据到hdfs故输入端需要使用TableMapReduceUtil类
  25. TableMapReduceUtil.initTableMapperJob("ns3:t5", getscan(), hbase_To_Hdfs.class, Text.class, NullWritable.class, job);
  26. FileOutputFormat.setOutputPath(job, new Path(args[0]));
  27. //设置jar包
  28. job.setJarByClass(HBaseToHdfs.class);
  29. //提交作业
  30. int b = job.waitForCompletion(true) ? 0 : 1;
  31. return b;
  32. }
  33. @Override
  34. public void setConf(Configuration configuration) {
  35. configuration.set(HDFS_NAME, HDFS_VALUE);
  36. configuration.set(MAPREDUCE_NAME, MAPREDUCE_VALUE);
  37. configuration.set(HBASE_NAME, HBASE_VALUE);
  38. this.configuration = configuration;
  39. }
  40. @Override
  41. public Configuration getConf() {
  42. return configuration;
  43. }
  44. public static void main(String[] args) throws Exception {
  45. ToolRunner.run(HBaseConfiguration.create(),new HBaseToHdfs() , args);
  46. }
  47. // 创建map程序
  48. private static Text mkey = new Text();
  49. static class hbase_To_Hdfs extends TableMapper<Text, NullWritable> {
  50. @Override
  51. protected void map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException {
  52. //定义字符串拼接
  53. StringBuffer stringBuffer = new StringBuffer();
  54. /**
  55. * 使用value获取扫描器,获取hbase表的列名/列值等信息
  56. * 使用StringBuffer来对需要的信息进行字符串拼接
  57. */
  58. CellScanner cellScanner = value.cellScanner();
  59. while (cellScanner.advance()) {
  60. Cell cell = cellScanner.current();
  61. stringBuffer.append(new String(CellUtil.cloneValue(cell))).append("\t");
  62. }
  63. mkey.set(stringBuffer.toString());
  64. context.write(mkey, NullWritable.get());
  65. }
  66. }
  67. }

 

原文链接:http://www.cnblogs.com/maple-q/p/10896452.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号