- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE4 / NUMPAGES4
Map和Reduce函数
Map和Reduce函数
摘 要:本章节主要讲解MapReduce函数,进一步了解mapper函数和reduce函数。
关键词:Mapper;Reduce;
1. MapReduce 原理
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归约)”,是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
MapReduce工作流程大致分为两部分:(1)map先从HDFS上读取不同的文件,然后对其进行map操作,生成一个个带有标签(也就是key)的数据块;(2)带有相同标签(key)的数据块,会被分配到同一个Reduce上进行操作,从而得到最终结果,并将最终结果写回HDFS。
图1 MapReduce工作原理
从最经典的wordcount单词计数执行过程进行进一步的分析,大致包含四个部分:(1)输入文件使一串字符串,是不自带分区的文件,而是文本文件,所以多了一个拆分的步骤。(2)接下来对分割的文本进行Map阶段的操作,其分发的标签(key)是单词本身,分发的内容是每一段文本里出现该单词的数量。(3)接下来会进行一个分发操作,即相同标签(key)的数据会被收集到一起。(4)Reduce对收集之后分配过来的数据进行处理,最终结果汇总,就是单词计数的结果。计数流程如下图所示。
图2 Wordcount处理流程
2. Mapper函数介绍
2.1 Mapper函数的执行流程
Mapper在执行的过程中需传入的四个参数:输入输出类型为泛型。内部实现首先声明了类Context,传递了四个泛型,分别是输入的key类型、输入的value类型、输出的key类型、输出的value类型。Mapper函数定义了四个方法:
(1)setup:定义Map的启动工作,比如读入一些配置、进行一些变量的初始化等
(2)map:定义实际的mapper阶段功能,比如数据读入、处理、打标签、分发等
(3)cleanup:定义mapper阶段之后收尾工作,比如多路输出等。
(4)run:实际执行程序的方法,先调用setup完成启动工作,然后调用map完成实际的mapper阶段功能,在所有map工作都完成之后,调用cleanup完成收尾工作。
public class MapperKEYIN, VALUEIN, KEYOUT, VALUEOUT{
public abstract class Context implements MapContextKEYIN, VALUEIN, KEYOUT, VALUEOUT { }
setup(Context context) { }
map(KEYIN key,VALUEIN value,Context context){context.write((KEYOUT) key, (VALUEOUT) value);}
cleanup(Context context) { }
run(Context context) {
setup(context);
try {
map(context.getCurrentKey(), context.getCurrentValue().context);
}finally { cleanup(context); }
}
}
2.2 Mapper函数的实现过程
(1)导入依赖包,java自带IO异常包,MapReduce中的IO包,hadoop-MapReduce中的Mapper 包。
import java,io.IOException;
import org.apache.hadoop.io,Text;
import org,apache.hadoop,mapreduce.Mapper;
(2)定义类,需要继承Mapper类,并指明4个10泛型(key-in,value-in,key-out,value-out)。
public class MiniTestMapper extends MapperText, Text, Text, Text{
(3)定义两个out变量:key-out、value-out。
public Text write_key = new Text();
public Text write_value = new Text
您可能关注的文档
- 创意思维与方法 创意思维与方法 61SURL-Eye Gaze Patterns while Searching vs. Browsing a Website (3).docx
- 创意思维与方法 创意思维与方法 89SURL-Olympics 2012 Goes Mobile Who Wins the Gold for Best App(3).doc
- 创意绣稿设计 国外创意刺绣 4-2- 第二节 国外创意刺绣.docx
- 大气环境治理技术 大气环境治理技术 教案 第06周.docx
- 大数据技术应用 tableau地图分析 tableau地图分析电子教案.doc
- 大数据技术应用 压力图实现数据可视化 压力图实现数据可视化电子教案.doc
最近下载
- MX-3、-MX-5、-MMX-6、-PX-7测厚仪使用手册.pdf VIP
- CB-T 34-2007 导缆孔船舶行业标准.pdf VIP
- 光学测试与测量软件:Phasics二次开发_(2).光学测试原理与Phasics软件实现.docx VIP
- 4-中南标11ZJ401-11ZJ411-11ZJ501-11ZJ901-标准图集.docx VIP
- 2025中国零售渠道演变趋势.pdf
- 配电网施工组织典型设计10kV电缆分册.doc VIP
- 抒情与写意——文人画 课件-2024-2025学年高中美术人美版(2019)美术必修 美术鉴赏.pptx VIP
- 关于电的小知识低年级小学生科普材料课件.ppt VIP
- 中秋博饼游戏规则.doc VIP
- 功率器件封装工艺流程课件.ppt VIP
原创力文档


文档评论(0)