- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2018;;任务4.1;Part 01;任务描述;任务目标;知识准备;任务实施;(1)定制MapReduce框架
MapReduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),MapReduce操作这个输入,通过本身定义好的计算模型,得到一个输出(output),这个输出就是所需要的结果。
这里需要学习的就是这个计算模型的运行规则。在运行一个MapReduce计算任务时,任务过程被分为两个阶段:Map阶段和Reduce阶段,每个阶段都是用键值对(key/value)作为输入(input)和输出(output)。而用户要做的就是定义好这两个阶段的函数:map函数和reduce函数。; public static class CleanJobReducer extends ReducerText, Text, Text, Text {
public void reduce(Text key, IterableText values,
Context context) throws IOException, InterruptedException {
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set(fs.defaultFS, hdfs://10.0.3.70:8020);
String[] ioArgs = args;
String[] otherArgs = new GenericOptionsParser(conf, ioArgs)
.getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println(Usage: Data Deduplication in out);
System.exit(2);
};Job job = new Job(conf, Data Deduplication);
job.setJarByClass(CleanJobMR.class);
// 设置Map、Combine和Reduce处理类
job.setMapperClass(CleanJobMapper.class);
job.setCombinerClass(CleanJobReducer.class);
job.setReducerClass(CleanJobReducer.class);
// 设置输出类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setOutputFormatClass(SequenceFileOutputFormat.class);
// 设置输入和输出目录
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
};接下来对这个框架结构进行详细的解析:
首先,看继承类CleanJobMapper。;reduce函数的输入也是一个key/value的形式,不过它的value是一个迭代器的形式IterableText values,也就是说reduce的输入是一个key对应一组value值,reduce也有context,其作用与map的context一致。
在MapReduce的处理过程中,由于MapReduce会在Map~Reduce???,将重复的Key合并在一起,所以MapReduce很容易就去除重复的行。
Map无须做任何处理,设置Map中写入context的东西为不作任何处理的行,也就是Map中最初处理的value即可,而Reduce同样无须做任何处理,写入输出文件的东西就是最初得到的Key。
具体如何定制map方法以及reduce方法,便是要结合数据清洗的逻辑来编写,这个在后续步骤中会进行说明。
此外,还有一个重要的main函数的调用,需要详细讲述。首先是:;请接着看如下代码:;Job job = new Job(conf, Data Deduplication);
job.setJarByClass(
您可能关注的文档
最近下载
- 河南省信阳市2024-2025学年普通高中高三第二次教学质量检测英语试卷含答案.pdf VIP
- 解读《GB_T 23850-2024工业高氯酸钠》全面解读.docx VIP
- 总经理股东会汇报.docx
- 2025-2030中国二甲基氨基丙胺(DMAPA)行业市场现状供需分析及投资评估规划分析研究报告.docx
- 上海市浦东新区立信会计金融学院附属高行中学2025-2026学年高三上学期9月教学质量检测数学试题+答案.docx VIP
- 点石斋画报.12集.24册.申报馆编印.1884-1889年.pdf VIP
- 印学话西泠 教学课件.pptx VIP
- 慢性呼吸疾病肺康复护理专家共识.pptx
- 七年级数学上册动点问题练习.docx VIP
- GB50666-2011 混凝土结构工程施工规范.docx
原创力文档


文档评论(0)