单词计数WordCountApp.class

public class WordCountApp {// 可以指定目录,目录下如果有二级目录的话,是不会执行的,只会执行一级目录.private static final String INPUT_PATH = "hdfs://hadoop1:9000/abd";// 输入路径private static final String OUT_PATH = "hdfs://hadoop1:9000/out";// 输出路径,reduce作业输出的结果是一个目录// _SUCCESS:在linux中,带下划线的这些文件一般都是被忽略不去处理的.表示作业执行成功.// _logs:产生的日志文件.// part-r-00000:产生的是我们的输出的文件.开始以part开始.r:reduce输出的结果,map输出的结果是m,00000是序号public static void main(String[] args) {Configuration conf = new Configuration();// 配置对象try {FileSystem fileSystem = FileSystem.get(new URI(OUT_PATH), conf);fileSystem.delete(new Path(OUT_PATH), true);Job job = new Job(conf, WordCountApp.class.getSimpleName());// jobName:作业名称job.setJarByClass(WordCountApp.class);FileInputFormat.setInputPaths(job, INPUT_PATH);// 指定数据的输入job.setMapperClass(MyMapper.class);// 指定自定义map类job.setMapOutputKeyClass(Text.class);// 指定map输出key的类型job.setMapOutputValueClass(LongWritable.class);// 指定map输出value的类型job.setReducerClass(MyReducer.class);// 指定自定义Reduce类job.setOutputKeyClass(Text.class);// 设置Reduce输出key的类型job.setOutputValueClass(LongWritable.class);// 设置Reduce输出的value类型FileOutputFormat.setOutputPath(job, new Path(OUT_PATH));// Reduce输出完之后,就会产生一个最终的输出,指定最终输出的位置job.waitForCompletion(true);// 提交给jobTracker并等待结束} catch (Exception e) {e.printStackTrace();}}/*** 输入的key标示偏移量:这一行开始的字节. 输入的value:当前的行文本的内容. MapReduce执行过程:* 在这里边,我们的数据输入来自于原始文件,数据输出写出到hdfs, 中间的一堆都是map输出产生的临时结果.存放在map运行的linux磁盘上的,* 当经过shuffle时,reduce就会通过http把map端的对应数据给取过来.* mapred-default.xml中mapredcue.jobtracker* .root.dir,mapred.tmp.dir存储map产生的结果. 作业运行时产生这个目录,作业运行完之后它会删除目录.*/public static class MyMapper extendsMapper<LongWritable, Text, Text, LongWritable> {// 源文件有两行记录,解析源文件会产生两个键值对.分别是<0,hello you>,<10,hello me>,所以map函数会被调用两次.// 在计算机存储的时候,是一维的结构.
        @Overrideprotected void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException {// 为什么要把hadoop类型转换为java类型?String line = value.toString();String[] splited = line.split("\t");// 使用hashMap写出去的优势:减少键值对出现的个数.Map<String, Integer> hashMap = new HashMap<String, Integer>();for (String word : splited) {// 在for循环体内,临时变量word出现的此时是常量1context.write(new Text(word), new LongWritable(1));// 把每个单词出现的次数1写出去.
            }}}// map函数执行结束后,map输出的<k,v>一共有4个.<hello,1>,<you,1>,<hello,1>,<me,1>// map把数据处理完之后,就会进入reduce.// 在进入shuffle之前,数据需要先进行分区.默认只有一个区.// 对每个不同分区中的数据进行排序,分组.// 排序后的结果:<hello,1>,<hello,1>,<me,1>,<you,1>// 分组后的结果(相同key的value放在一个集合中):<hello,{1,1}>,<me,{1}>,<you,{1}>// 规约(可选)// map中的数据分发到reduce的过程称作shufflepublic static class MyReducer extendsReducer<Text, LongWritable, Text, LongWritable> {// 每一组调用一次reduce函数,一共调用了三次
        @Overrideprotected void reduce(Text key, Iterable<LongWritable> values,Context context) throws IOException, InterruptedException {// count标示单词key在整个文件出现的次数// 分组的数量与reduce函数调用次数是相等的.// reduce函数调用次数与产生的<k,v>的数量抛开业务,没有任何关系!long count = 0L;for (LongWritable times : values) {count += times.get();}context.write(key, new LongWritable(count));}}
}

 

转载于:https://www.cnblogs.com/xiaolong1032/p/4443148.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

女朋友在家是怎么利用我的模型的​

1 趁着奶猫还没长大&#xff0c;赶紧摸2 说有谁不喜欢玩具呢3 爸爸再也不用费心编辫子了4 谁知道这是什么5 还挺会利用的啊6 学霸上厕所的时候7 逻辑推理你点的每个赞&#xff0c;我都认真当成了喜欢

abap al设置单元格可编辑 oo_润乾报表美化设置 -- 样式

在制作报表时&#xff0c;报表设计人员经常遇到下面这些美化报表的问题&#xff1a;为什么我做出的报表领导总觉得不好看不满意 美化一张报表要设置太多的格式和属性&#xff0c;那么多报表都得重复设置&#xff0c;真繁琐 系统中不同人做出的报表展现格式各不相同&#xff0c;…

分区表说明

用分区表&#xff0c;以下是说明和方法&#xff01;SQL code高性能网站建设之 MS Sql Server数据库分区 什么是数据库分区&#xff1f; 数据库分区是一种对表的横向分割&#xff0c;Sql server 2005企业版和之后的Sql server版本才提供这种技术&#xff0c;这种对表的横向分割不…

GRPC在网页前端的使用

一直以来都是一个桌面端程序狗&#xff0c;某天突发奇想&#xff0c;想用网页实现一个客户端&#xff0c;于是开始了electronvueasp.netcore的探寻之路&#xff0c;这条道路很坎坷主要是css让我头疼不已&#xff08;当然我们并没有放弃使用wpf&#xff0c;我是一个wpf老手&…

【转帖】配置管理计划(CM Plan)

作者:scmroad出自&#xff1a;配置管理之路 http://bbs.scmroad.com/ 版权所有&#xff0c;转载请注明原作者和出处&#xff0c;谢谢合作。目的&#xff1a;这篇文章主要想和大家交流下&#xff0c;我们在写配置管理计划的时候都应该写些什么。写配置管理计划对于一个CM来说是一…

vue 带全选和多选的表格怎么写_EXCEL五分钟,批量制作带照片的工地出入证

作者&#xff1a;祝洪忠 转自&#xff1a;Excel之家ExcelHome小伙伴们好啊&#xff0c;今天和大家分享一个邮件合并的技巧——批量制作带照片的工地出入证。先看效果图&#xff1a;要准备的材料包括&#xff1a;一、Excel资料表资料表中包括姓名、工号和用姓名命名的带格式后缀…

计算机统计字符数,怎么看word版本-Word文档中的字数和字符数是怎样统计的?

简介&#xff1a;大家知道&#xff0c;Word中具有字数、字符数自动统计功能&#xff0c;那Word文档中的字数和字符数是怎样统计的&#xff1f;下面给大家简单的介绍一下工具&#xff1a;Word2013方法一、1.点击【审阅】选项卡2.点击【字数统计】图1统计结果如图所示&#xff1a…

从小一看到数字,脑子里就开始搞颜色......

1 脑子里的数字有颜色估计都是它的锅▼2 不愧是你▼3 文科生考场惯用伎俩填满了就是胜利▼4 每年向社会输送大量精英人才▼5 &#xff1f;&#xff1f;&#xff1f;▼6 高考最后一晚逆袭的答案在一本叫《刑法》的书里▼7 中国外卖VS俄罗斯外卖毛子送外卖坐公交你敢信&am…

android键盘弹出,聊天背景不变形

2019独角兽企业重金招聘Python工程师标准>>> android:transcriptMode"normal"&#xff0c;如果软键盘弹出时候&#xff0c;设置该属性listview会自动调整到最后&#xff0c;这样弹出的软键盘就不会遮盖到listview了 背景图尽量用 getWindow().setBackgrou…

bpmn文件的标签为何都以bpmn2开头_C语言之两种作用域:函数的作用域与文件作用域...

作用域描述程序中可访问标识符的区域。一个C变量的作用域可以是块作用域、函数作用域、函数原型作用域或文件作用域。其中&#xff0c;块是用一对花括号括起来的代码区域。例如&#xff0c;整个函数体是一个块&#xff0c;函数中的任意复合语句也是一个块。定义在块中的变量具有…

集成开放平台标准化连接器之基于OAS3.0的API管理能力

源宝导读&#xff1a;随着企业信息化进程的逐步深入&#xff0c;互联网技术的发展和分布式系统应用的日益广泛&#xff0c;直接导致大量异构系统的存在&#xff0c;这些系统往往各自独立、封闭运行&#xff0c;相互之间不存在或很少存在数据的交互&#xff0c;由于这种应用分割…

数据库设计范式

数据库设计范式 范式的概念和理论是美国著名科学哲学家托马斯库恩(Thomas,Kunn) 提出并在《科学革命的结构》(The Structure of Scientific Revolutions)&#xff08;&#xff11;&#xff19;&#xff16;&#xff12;&#xff09;中系统阐述的&#xff0c;指常规科学所赖以运…

POJ 2533 Longest Ordered Subsequence

解题思路:最长递增子序列 #include <iostream>usingnamespacestd;intmain(){inti,j,k,n,p,q,m,len,num[1000],B[1001]; scanf("%d", &n);for(i0;i<n;i)scanf("%d", &num[i]);for(B[0]-1,B[1]num[0],len1,i1;i<n;i) {for(p0,qlen,m(pq)…

axure 组件_技巧分享 | Axure后台组件制作的全过程

点击上方蓝字&#xff0c;关注行设视觉黑马家族成员原创发布于行设视觉&#xff0c;转载请注明出处。作者 | 时光若刻http://www.woshipm.com/rp/2527010.html大家好&#xff0c;前一段时间我刚刚分享了一篇《打造高品质Axure组件库就是这么简单》&#xff0c;意在分享给大家一…

有没有测试人心里的软件,心理测评,认识自己的有效工具:(二)你做的可能是假的心理测试...

上一篇文章主要介绍了心理测评的基础知识&#xff0c;今天在上一篇的基础上&#xff0c;介绍下网上一些随处可见的心理测评&#xff0c;是如何的错误&#xff0c;以及怎么“迷惑”大家的&#xff1f;网上随便搜的一个阅读量超过10w的"心理"测试&#xff1a;测试他人会…

这相册一出手,哪个长辈搞不定?

1 这相册看着多喜庆看这花多美▼2 不会只有我一个人连最普通的都叠不好吧&#xff1f;▼3 真就史上最惨毕业生连毕业照都不配拥有吗&#xff1f;▼4 看起来经历了很严格的军训▼5 我闺蜜【偷】男票的钱给我买MAC air▼6 在台湾爸比和东北妈妈中间无缝切换▼7 先漱口、后…

医疗大数据:商业保险、移动医疗的崛起,正在形成闭环(二)

以下内容摘自华创证券分析师 吴晓雯、张伟光的《挖掘医疗大数据中的金矿》报告。 接上篇&#xff1a;医疗大数据&#xff1a;商业保险、移动医疗的崛起&#xff0c;正在形成闭环&#xff08;一&#xff09; 三、 商业保险、移动医疗等商业力量的崛起&#xff0c;加速医疗大数据…

WriteComponent,ReadComponent

WriteComponent,ReadComponent 代码 varForm1: TForm1; ms: TMemoryStream;implementation{$R *.dfm}procedureTForm1.Button1Click(Sender: TObject);varaBtn: TButton;beginaBtn :TButton.Create(Self); aBtn.Parent :Self; aBtn.Caption :Test; aBtn.Left :10; ms.WriteComp…

jquery 使用方法

jQuery是目前使用最广泛的javascript函数库。据统计&#xff0c;全世界排名前100万的网站&#xff0c;有46%使用jQuery&#xff0c;远远超过其他库。微软公司甚至把jQuery作为他们的官方库。对于网页开发者来说&#xff0c;学会jQuery是必要的。因为它让你了解业界最通用的技术…

bread是可数还是不可数_雅思官方语法教程之——这个名词到底可不可数?

名词是否可数&#xff0c;是非常隐形的扣分点。考生很可能意识不到自己犯错了&#xff0c;毕竟这是中文里不存在的语法点。这类语法点更应该重点备考。越练习&#xff0c;越熟悉&#xff0c;犯错扣分的几率也就越低。OK进入主题↓语法解释官方对可数和不可数名词的解释如下&…