Pig:为什么我们可以将PARALLEL设置为ORDER运算符

时间:2014-08-08 19:19:56

标签: mapreduce apache-pig

我已阅读Pig Cookbook的文档,它说

PARALLEL only affects the number of reduce tasks. Map parallelism is determined by the input file, one map for each HDFS block. 

我不明白ORDER如何设置减速器的数量,我认为要获得总排序,最终我们只需要使用1个减速器来获取所有中间结果并合并,是什么参数PARALLEL是指?

1 个答案:

答案 0 :(得分:0)

它可以正常工作,因为reducer以一种方式对密钥进行分区,使得由reducer N处理的密钥是> =由N-1处理的密钥。

为此,Pig进行采样,然后对ORDER进行分区。它对输入的前几条记录进行采样,并查看订购密钥的分布。基于此示例,它然后构建一个生成平衡总订单的分区程序。 例如我们在一个字段上排序的值是a,b,c,c,c,c,e,e,e,m,n,o,q,r,z,如果我们有三个reducer,分区器会分区字段ac转到reducer 1的记录,e-m转到reducer 2,nz转到reducer3。 然后,每个reducer在本地对数据进行排序,从而产生全局排序的数据。

相关问题