这篇文章主要为大家展示了“HBase如何编写mapReduce”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“hbase如何编写mapreduce”这篇文章吧。package com.h
这篇文章主要为大家展示了“HBase如何编写mapReduce”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“hbase如何编写mapreduce”这篇文章吧。
package com.hbase.test;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.client.Mutation;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Result;import org.apache.hadoop.hbase.client.Scan;import org.apache.hadoop.hbase.io.ImmutableBytesWritable;import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;import org.apache.hadoop.hbase.mapreduce.TableMapper;import org.apache.hadoop.hbase.mapreduce.TableReducer;import org.apache.hadoop.hbase.util.Bytes;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;public class HbaseMrTest {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {Configuration conf = HBaseConfiguration.create();//配置confconf.set("hbase.ZooKeeper.quorum", "bigdata01,bigdata02,bigdata03");conf.set("hbase.zookeeper.property.clientPort", "2181");Job job = Job.getInstance(conf, "Word-count");//指定执行job的主类job.setjarByClass(HbaseMrTest.class);Scan scan = new Scan();//定义mapper需要扫描的列scan.addColumn(Bytes.toBytes("content"), Bytes.toBytes("words"));//配置mapperTableMapReduceUtil.initTableMapperJob("wordcount", scan,HMapper.class , Text.class, IntWritable.class, job);//配置recuderTableMapReduceUtil.initTableReducerJob("result", HReducer.class, job);//提交jobSystem.exit(job.waitForCompletion(true)?0:1);}}// Text, IntWritable 为输出类型class HMapper extends TableMapper<Text, IntWritable>{Text out = new Text();IntWritable iw = new IntWritable(1);@Overrideprotected void map(ImmutableBytesWritable key, Result value,Mapper<ImmutableBytesWritable, Result, Text, IntWritable>.Context context)throws IOException, InterruptedException {//通过result 直接过得content:words 的值byte[] bytes = value.getValue(Bytes.toBytes("content"), Bytes.toBytes("words"));if(bytes!=null) {String words = Bytes.toString(bytes);//对获得的一行单词进行分割String[] ws = words.split(" ");for(String wd : ws) {out.set(wd);//写出值,如: you 1context.write(out, iw);}}}}// Text, IntWritable 为mapper的输出类型class HReducer extends TableReducer<Text, IntWritable, ImmutableBytesWritable>{@Overrideprotected void reduce(Text text, Iterable<IntWritable> iter,Reducer<Text, IntWritable, ImmutableBytesWritable, Mutation>.Context context)throws IOException, InterruptedException {int sum = 0 ;//对iter遍历for(IntWritable intw : iter) {sum+= intw.get();}//new 一个put 构造函数内的值为row keyPut put = new Put(Bytes.toBytes(text.toString()));//put添加columnfamily 和columnput.addColumn(Bytes.toBytes("info"), Bytes.toBytes("wordcnt"), Bytes.toBytes(String.valueOf(sum)));//将每个单词当做row key 写出,put是相加的总和context.write(new ImmutableBytesWritable(Bytes.toBytes(text.toString())), put);}}最后将java文件export为RaunableJar放到linux java -jar hbase.jar com.hbase.test.HbaseMrTest 运行
原始数据:
运行结果:
以上是“hbase如何编写mapreduce”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!
--结束END--
本文标题: hbase如何编写mapreduce
本文链接: https://lsjlt.com/news/231288.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0