MapReduce如何实现WordCount及其优化
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这期内容当中小编将会给大家带来有关MapReduce如何实现WordCount及其优化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。WordCount: 单词计数,
千家信息网最后更新 2026年11月01日MapReduce如何实现WordCount及其优化
这期内容当中小编将会给大家带来有关MapReduce如何实现WordCount及其优化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
WordCount: 单词计数, 统计文本文件中每一个单词出现的次数
定义Mapper类, 该类继承org.apache.hadoop.mapreduce.Mapper
并重写map()方法
public static class TokenizerMapper extends Mapper{ // 定义一个静态成员变量, 并且是不可变的, 避免每一次调用map()方法时, 创建重复对象 private final static IntWritable one = new IntWritable(1); // 定义一个成员变量, 可变, 每一次调用map()方法时, 只需要调用Text.set()方法赋新值 private Text word = new Text(); public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String[] words = value.toString().split(" "); for (String item : words) { word.set(item); context.write(word, one); } } }
定义Reducer类, 该类继承org.apache.hadoop.mapreduce.Reducer
并重写reduce()方法
public static class IntSumReducer extends Reducer{ // 定义一个成员变量, 可变, 每一次调用reduce()方法时, 只需要调用IntWritable.set()方法赋新值 private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritableval : values) { sum += val.get(); } result.set(sum); context.write(key, result); } }
测试WordCount
public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf); job.setJarByClass(WordCount.class); // 设置job的主类 job.setMapperClass(TokenizerMapper.class); // 设置Mapper类 // 利用combiner来减少通过shuffle传输的数据量 job.setCombinerClass(IntSumReducer.class); // 设置Combiner类 job.setReducerClass(IntSumReducer.class); // 设置Reducer类 job.setMapOutputKeyClass(Text.class); // 设置map阶段输出Key的类型 job.setMapOutputValueClass(IntWritable.class); // 设置map阶段输出Value的类型 job.setOutputKeyClass(Text.class); // 设置reduce阶段输出Key的类型 job.setOutputValueClass(IntWritable.class); // 设置reduce阶段输出Value的类型 // 设置job输入路径(从main方法参数args中获取) FileInputFormat.addInputPath(job, new Path(args[0])); // 设置job输出路径(从main方法参数args中获取) FileOutputFormat.setOutputPath(job, new Path(args[1])); job.waitForCompletion(true); // 提交job }输入:
words:
hello tomhello jerryhello kittyhello worldhello tom
输出:
hello 5jerry 1kitty 1tom 2world 1
减少对象的创建, 更少的GC, 肯定会带来更快的速度
利用combiner来减少通过shuffle传输的数据量, 这是MapReduce作业调优的关键点之一
上述就是小编为大家分享的MapReduce如何实现WordCount及其优化了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
方法
输出
类型
阶段
变量
成员
可变
内容
单词
参数
对象
数据
路径
传输
分析
输入
专业
中小
关键
关键点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
互联网科技园
互联网科技公司简介
新华互联网科技学校
互联网中国科技
互联网科技的英文
联恩商钥互联网科技有限公司
互联网科技生活的内容
互联网科技公司招聘
西藏七维空间互联网科技有限公司
想开互联网科技公司怎么样
畅思互联网科技
江苏苏星互联网科技有限公司
互联网科技包装股份有限公司上市
南京一网一红互联网科技有限公司
版纳互联网科技选哪家
互联网金融运营模式中的金融科技
银川新华互联网科技学校是国营吗
平安好医生打造互联网科技医疗
互联网的黑科技实验室
咖啡豆
互联网络科技
金融科技还是互联网
科技企业和互联网企业
互联网科技开发公司
极限挑战互联网科技
互联网科技与管理
电子商务与互联网科技的关系
中天科技中国工业互联网
互联网科技年终奖