程序源宝宝

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

小结排序:
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  程序源宝宝  阅读(173)  评论(0编辑  收藏  举报