Mapreduce 猪:为什么我们可以设置平行顺序运算符

Mapreduce 猪:为什么我们可以设置平行顺序运算符,mapreduce,apache-pig,Mapreduce,Apache Pig,我看过的文件,上面说 PARALLEL only affects the number of reduce tasks. Map parallelism is determined by the input file, one map for each HDFS block. 我不明白ORDER如何设置减缩器的数量,我认为要得到总排序,最终我们只需要使用一个减缩器来获取所有中间结果并合并,参数PARALLEL指的是什么 它可以工作,因为reducer在key上对数据进行分区,这样reduce

我看过的文件,上面说

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

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

它可以工作,因为reducer在key上对数据进行分区,这样reducer N处理的key就是>=N-1处理的key

为此,Pig先进行采样,然后进行顺序分区。它对输入的前几条记录进行采样,并查看排序键的分布。基于此示例,它然后构建一个生成平衡的总订单的分区器。 e、 我们在一个值为a、b、c、c、e、e、e、m、n、o、q、r、z的字段上进行排序,如果我们有三个减缩器,分区器将对记录进行分区,字段a-c到减缩器1,e-m到减缩器2,n-z到减缩器3。
然后,每个reducer在本地对数据进行排序,生成全局排序的数据。

字符串呢?它是按字典顺序排序的,但您可以使用不同的方法计算其哈希键,因此键的顺序可能与字典的顺序不一致,这种情况下,如果您在本地对其进行排序,则不会自动获得全局排序的数据。这就是键。钥匙的顺序和字典的顺序一样。不,不一样。字典的顺序只有相对意义,因为字符串可以任意长,而散列值是固定长度的整数,即使是64位整数的完美散列也只能对不超过14个字符的字符串进行排序。我想我不明白你的第一条评论。无论如何,关键点是使用整键来决定顺序操作的分区算法。因此,它确保通过还原器发送半有序数据,以便进行本地排序。