它将每个Key的HashCode对总reducer数取模,转换成partion index。
个人理解这样做有两个目的:
  • 所有相同Key的数据在一个Reducer内处理
  • 尽量均匀的将数据分配到各个Reducer
但毫无疑问,HashPartitioner不能保证它的Partion之间的有序。

为了保证Partion之间的有序,TeraSort定义了一个TotalOrderPartitioner。

 

TotalOrderPartitioner首先要解决的问题是,partitioner发生在map里,而每个mapper只处理它自己的一份split数据,它如何知道它所处理的数据在全局所有输入数据里的位置?

posted on 2012-09-14 10:06  finallyly  阅读(356)  评论(0编辑  收藏  举报