您的位置:首页 > 运维架构

hadoop4--深入mapreduce

2015-06-15 22:14 246 查看

运行结果附图

本节课程主要内容为深入学习MapReduce原理,并编写java程序对日志文件进行流量统计。

首先编写MapReduce代码,并在Eclipse中调试成功

代码主要思路:

map阶段:

以user:spname组成的Text作为key;以uploadTraffic,downloadTraffic组成的Text作为value,进行map映射

reduce阶段:

仍以user:spname组成的Text作为key;
对于value的操作:先从Text中拆分出uopladTraffic和downloadTraffic,转换成long型分别作累加,得到uploadTrafficSum和downloadTrafficSum,同时为此key进行计数得到count.
最后以count,uploadTrafficSum,downloadTrafficSum组成的Text作为value值




打jar包,通过Hue上传到HDFS,再下载到本地的docker中的master上

在Hadoop集群上运行jar包





查看运行结果





问题记录

在编写MapReduce的代码的时,输入输出的key,value的类型对应很重要,需要将以下几个地方设置好:

1.建立map类,reduce类的泛型

2.map函数和reduce函数的参数(其参数的前两个:key,value均代表输入类型)

3.main函数中的配置,

当map和reduce的输出类型相同时,可以直接使用

job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
两个方法进行设置,并可以使用job.setCombinerClass(Reduce.class);将map的结果进行合并输出给reduce

但是当map和reduce的输出类型相不同时,需要分别设置map和reduce的输出类型,使用函数:

job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
并且不能进行job.setCombinerClass(Reduce.class);的设置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: