MapReduce算法 – 反转排序(Order Inversion)

译者注:在刚开始翻译的时候,我将Order Inversion按照字面意思翻译成“反序”或者“倒序”,但是翻译完整篇文章之后,我感觉到,将Order Inversion翻译成反序模式是不恰当的,根据本文的内容,很显然,Inversion并非是将顺序倒排的意思,而是如同Spring的IOC一样,表明的是一种控制权的反转。Spring将对象的实例化责任从业务代码反转给了框架,而在本文的模式中,在mapreduce的sorting过程中,原来由框架负责的数据的排序以及shuffle规则被用户定制化了,控制权从框架反转到了user,实际上这种模式就是由用户控制sorting过程的意思
  本文是一系列有关MapReduce算法的文章中的一篇,这些算法都在《Data-Intensive Text Processing with MapReduce》中提到过。这系列文章在本文之前已经发表的有 本地聚合, 本地聚合二 和 建立共生矩阵。在这篇文章里我们要讨论的是排序反转模式。这种模式利用MapReduce的排序(sorting)阶段,让一部分数据提前发送到reducer端以利于后续计算,如果你对MapReduce了解不多,我劝你读下去,因为我将展示给你如何使用排序(sorting)和partitioner来实现我们的目的,这将会大有益处。
  尽管已经有许多MapReduce框架提供了高层次的抽象,例如Hive和Pig,理解底层是如何运行的仍然是有好处的。反序模式出现在《Data-Intensive Text Processing with MapReduce》这本书的第三章, 为了说明反序模式,我们要用共生矩阵模式中出现过的配对方法。建立共生矩阵的时候我们可以记录下词共同出现的次数,我门会对配对方法做一个小小的修改,mapper不止输出诸如(“foo”,”bar”) 这样的词对,还会额外输出(“foo”,”*”)这样的词对,对于每个词都依此法办理,这样可以很容易的得出左边的这个词的总共出现次数,用这个就可以计算出相对频率。这种方法会带来两个问题,首先我们需要想办法保证让 (“foo”,”*”) 成为reducer 的第一条记录,其次我们要保证左边的词相同的所有的词对都被同一个reducer所处理,我们先来看mapper代码再解决这两个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值