MapReduce常见计算模式,即实际编程中如何使用MapReduce实现常见的Top N,join等数据操作。随着Hadoop等工具的发展,已经提供了各种高级语义的操作符,不需要由程序员自己在代码中实现这些计算了,因此本文仅仅是作为理解MR如何工作的参考。
过滤模式
1,filter。简单过滤模式指在一个较大的数据集中按照规则筛选出较小的数据集,相当于SQL中的where条件。由于此类操作不需要对数据进行聚合操作,所以无须Reduce阶段,是一个Map-only类型的方案。
Mapper函数的输入是较大数据集;在mapper内部调用一个判断函数f对内容进行判断,返回true或false;true则输出数据,false则不输出。
2,Top N
从大量数据中,根据记录某个字段内容的大小取出其值最大的n条记录,这也是常见的数据过滤应用场景。这和简单过滤的区别是,简单过滤的条件判断仅涉及当前记录,而Top n计算模式则需要在记录之间进行比较,并获得全局最大的数据子集。
其基本思路很简单,多个mapper计算出当前block(数据块)内的最大top n的值,也就是局部的最大top n。之后全部局部最大值交由唯一的reducer计算出全局的最大top n。其特点是:
a,Mapper和Reducer中的逻辑是一样的。
b,Reducer只有一个。
c,Mapper和Reducer可以使用任何排序算法找出局部/全局最大值。
Join模式
两个数据集进行join操作也很常见,即两个不同数据集根据相同外键进行信息融合。常见的join包括Reduce-side join和Map-side join。</