MapReduce如何实现WordCount及其优化
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这期内容当中小编将会给大家带来有关MapReduce如何实现WordCount及其优化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。WordCount: 单词计数,
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
GBK数据库如何导入
操作数据库界面
上海市网络安全保卫处
信息与网络安全培训ppt
java 内存 数据库
珠海来来网网网络技术
国家青少年网络安全条约
信息网络安全演练方案
临海兴业银行网络安全
郑州软件开发哪里有
sun服务器查看白名单
大学生宿舍网络安全隐患
网络安全演习比例
联想电脑服务器专卖
织梦网站数据库备份到哪了
推荐的网络安全类型
灌溉技术的数据库设计分析
国产数据库管理系统技术特性
靖江进口网络技术市场
网络安全工作领导小组成立文件
创建宏 关闭当前数据库
德惠品质网络技术服务至上
医院网络安全授权流程
软件开发流程文档
我的世界时空之城手机版服务器
新罗区颜全为网络技术工作室
软件开发出来做什么
推荐的网络安全类型
计算机网络安全测试卷
无公网ip 服务器