MapReducer随笔小记

本文介绍了MapReduce的基本原理,包括如何通过设置任务数量实现数据过滤,如何利用Reduce类完成分组、排序、表连接等操作,以及如何处理涉及多次Shuffle过程的复杂场景。此外还探讨了MapTask本地数据统计的方法及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小结排序:
1、如果只需要对数据进行过滤,筛选只需要编写Mapper类,不需要Reduce类,此时在Driver中要执行下面一条语句
Job。setNumReduceTask(0);
2、如果需要对数据集进行分组(group by)、排序(order by)、表连接(join)、排重(distinct)等操作,则
需要编写Reduce类,因为这些操作都是基于MapTask的输出建(Key)来完成

3、如果既有分组又有派讯则只能使用两个MapReduce作业来完成,因为分组和排序会涉及到两次Shuffle过程

分组和排序的本质为?
分组是基于排序来完成的,也就是说分组之前已经经过了排序,从MapTask到ReduceTask的Shuffle过程所使用的默
认排序是升序,排序就是比较值的大小:
------------------
数字类型:直接根据数值大小进行比较
字符串类型:根据字典序列(ASCII码值大小)进行排序


MapTask本地数据统计:Combiner---
-------------使用卡宾类需要注意问题:
1、卡宾类与普通的Reducer类都是一样的,继承与Reducer类
2、卡宾类的统计算法对于ReduceTask而言必须具有可拆解性,否则不能使用卡宾
3、如果卡宾类的算法与Reducer的算法是完全一致的,则可直接将编写的Reducer类作为卡宾类使用
wcJob.setCombinerClass(WordCountReducer.class);

Hadoop中的分布式缓存:分发在磁盘上,spark

posted on 2017-12-15 17:50 程序源宝宝 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/pandazhao/p/8044269.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值