2024年基础词频计数器java

基础词频计数器java一 MapReduce1 0 运行模型 二 MapReduce 编程模型之执行步骤 1 准备 map 处理的输入数据 2 交给 Mapper 进行处理 3 Shuffle 规则可以自己控制 4 Reduce 处理 合并 归并 5 输出 MapReduce 处理流程 InputFormat 读数据 通过 Split 将数据切片成 InputSplit 通过 RecordReader 读取记录 再交给 map 处理

大家好,我是讯享网,很高兴认识大家。



一、MapReduce1.0运行模型

MapReduce统计英文文本词频 PPT_MapReduce

二、MapReduce编程模型之执行步骤

1、准备map处理的输入数据

2、交给Mapper进行处理

3、Shuffle【规则可以自己控制】

4、Reduce处理[合并、归并]

5、输出

MapReduce处理流程

InputFormat读数据,通过Split将数据切片成InputSplit,通过RecordReader读取记录,再交给map处理,处理后输出一个临时的<k,v>键值对,再将结果交给shuffle处理,最终在reduce中将最后处理后的<k,v>键值对结果通过OutputFormat重新写回到HDFS中。

MapReduce统计英文文本词频 PPT_MapReduce_02

三、词频统计原理图:

MapReduce统计英文文本词频 PPT_hadoop_03

Combiner能减少网络IO、提升作业的性能

Combiner的局限性求平均数:总数 / 个数   对于含有除法的操作,需要慎重,有可能结果会不正确

四、词频统计具体代码实现[读写在HDFS和本地完成]

0、pom.xml

1、准备一个自定义的Mapper类

讯享网

2、准备一个自定义的Reducer类

 

读写在HDFS完成

3、准备一个任务驱动类

讯享网

4、将文件上传到HDFS的/wordcount/input中(没有创建提前创建好该文件夹)

1.txt

 

读写在本地中完成

将上述的第四步改为:

在工程下创建一个input文件夹

MapReduce统计英文文本词频 PPT_Text_04

修改上述第三步的代码,只new Configuration()即可,最后把输入路径改成input、输出路径改成output即可

 

运行测试

运行WordCountLocalApp

得到最终结果输出:

MapReduce统计英文文本词频 PPT_MapReduce_05

输出结果:

MapReduce统计英文文本词频 PPT_Hadoop_06

五、关于自定义复杂类型的介绍

 

六、NullWritable介绍

若Mapper或Reducer中某个输入或输出不想输出显示,则使用NullWritable替换我们常用的类型(如Text、LongWritable)等

Plus:NullWritable.get(),返回NullWritable类型

七、自定义Partitioner介绍

默认情况下Map的输出需要做shuffle操作,将key根据一定的算法分发到Reduce上执行【如相同的key,或者具有相似特征的key】,我们也可以自定义分区写数据

基础词频计数器javaMapReduce统计英文文本词频 PPT_apache_07

MapReduce统计英文文本词频 PPT_apache_08

numReduceTasks:你的作业所指定的reducer的个数,决定了reduce作业输出文件的个数

HashPartitioner是MapReduce默认的分区规则

 

在job任务驱动类中加上一行代码:

 

观察output文件输出:【总共4个文件】

 

总结:Partitioner决定maptask输出的数据交由哪个reducetask处理

默认实现:分发的key的hash值与reduce task个数取模

八、程序修改为在Yarn上运行

第一步

那么outputPath、和inputPath则不能写死,修改为args[0]、args[1]

 

第二步

进入工程,执行maven打包命令

 

打包完成后jar包在当前项目的 target/文件夹内

MapReduce统计英文文本词频 PPT_Hadoop_09

在hadoop机器上执行

 

总结:

MapReduce统计英文文本词频 PPT_hadoop_10

小讯
上一篇 2025-01-02 11:11
下一篇 2024-12-24 23:10

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/4954.html