MapReduce如何实现WordCount及其优化
发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,这期内容当中小编将会给大家带来有关MapReduce如何实现WordCount及其优化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。WordCount: 单词计数,
千家信息网最后更新 2025年01月28日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安全错误
数据库的锁怎样保障安全
网络安全消费为ppt
如何建立文档数据库
安全风险数据库的内容包括什么
闵行区app软件开发系统
数据库中 top 怎么用
大学网络安全专业用哪些电脑
上海网络技术转让供应商
大同市网络安全职业技能大赛
丝绸之路国家网络安全现状
什么叫excel服务器
服务器带宽0.08g
捷顺一卡通管理服务器名称
临床案例数据库
成都软件开发攻略
网络安全南美停电
sql备份数据库哪几个
软件开发公司财务工作
网络技术有限公司招聘
共同维护我们的精神家园网络安全
浙南科技城互联网大厦怎么样
亿速云服务器苹果电脑登陆不了
电子作业指导书软件开发
网络安全专业文科生可以考吗
数据库的排序sql语句
海康威视周界报警服务器
国际网络安全大赛怎么玩
网吧管理系统数据库实验报告
网络安全治理的现状特点
网络安全征文1200字
软件开发公司财务工作