首页 / HBASE / hbase与hdfs的交互
hbase与hdfs的交互
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了hbase与hdfs的交互,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2406字,纯文字阅读大概需要4分钟。
内容图文
hdfs和hbase的交互,和写MapReduce程序类似,只是需要修改输入输出数据和使用hbase的javaAPI对其进行操作处理即可
public class HBaseToHdfs extends ToolRunner implements Tool { private Configuration configuration; //配置文件需要配置的属性privatestaticfinal String HDFS_NAME = "fs.defaultFS"; privatestaticfinal String HDFS_VALUE = "hdfs://mycluster"; privatestaticfinal String MAPREDUCE_NAME = "mapreduce.framework.name"; privatestaticfinal String MAPREDUCE_VALUE = "yarn"; privatestaticfinal String HBASE_NAME = "hbase.zookeeper.quorum"; privatestaticfinal String HBASE_VALUE = "qiaojunlong3:2181,qiaojunlong4:2181,qiaojunlong5:2181"; //获取hbase表的扫描对象private Scan getscan() { returnnew Scan(); } @Override publicint run(String[] args) throws Exception { getConf(); //获取job实例对象 Job job = Job.getInstance(configuration, "copy_move"); //map/reduce的class链接 job.setMapperClass(hbase_To_Hdfs.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(NullWritable.class); //设置输入输出 //由hbase导数据到hdfs故输入端需要使用TableMapReduceUtil类 TableMapReduceUtil.initTableMapperJob("ns3:t5", getscan(), hbase_To_Hdfs.class, Text.class, NullWritable.class, job); FileOutputFormat.setOutputPath(job, new Path(args[0])); //设置jar包 job.setJarByClass(HBaseToHdfs.class); //提交作业int b = job.waitForCompletion(true) ? 0 : 1; return b; } @Override publicvoid setConf(Configuration configuration) { configuration.set(HDFS_NAME, HDFS_VALUE); configuration.set(MAPREDUCE_NAME, MAPREDUCE_VALUE); configuration.set(HBASE_NAME, HBASE_VALUE); this.configuration = configuration; } @Override public Configuration getConf() { return configuration; } publicstaticvoid main(String[] args) throws Exception { ToolRunner.run(HBaseConfiguration.create(),new HBaseToHdfs() , args); } // 创建map程序privatestatic Text mkey = new Text();
staticclass hbase_To_Hdfs extends TableMapper<Text, NullWritable> { @Override protectedvoid map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException { //定义字符串拼接 StringBuffer stringBuffer = new StringBuffer(); /** * 使用value获取扫描器,获取hbase表的列名/列值等信息 * 使用StringBuffer来对需要的信息进行字符串拼接 */ CellScanner cellScanner = value.cellScanner(); while (cellScanner.advance()) { Cell cell = cellScanner.current(); stringBuffer.append(new String(CellUtil.cloneValue(cell))).append("\t"); } mkey.set(stringBuffer.toString()); context.write(mkey, NullWritable.get()); } } }
原文:https://www.cnblogs.com/maple-q/p/10896452.html
内容总结
以上是互联网集市为您收集整理的hbase与hdfs的交互全部内容,希望文章能够帮你解决hbase与hdfs的交互所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】