它将每个Key的HashCode对总reducer数取模,转换成partion index。
个人理解这样做有两个目的:
为了保证Partion之间的有序,TeraSort定义了一个TotalOrderPartitioner。
个人理解这样做有两个目的:
- 所有相同Key的数据在一个Reducer内处理
- 尽量均匀的将数据分配到各个Reducer
为了保证Partion之间的有序,TeraSort定义了一个TotalOrderPartitioner。
TotalOrderPartitioner首先要解决的问题是,partitioner发生在map里,而每个mapper只处理它自己的一份split数据,它如何知道它所处理的数据在全局所有输入数据里的位置?