Mapreduce ApachePig-如何在组操作的还原程序之间分配数据

Mapreduce ApachePig-如何在组操作的还原程序之间分配数据,mapreduce,apache-pig,Mapreduce,Apache Pig,我想知道PIG实际上是如何决定如何在reduce阶段对数据进行分区的,以及我是否可以影响数据分布以避免不平衡的reducer负载 例如: grouped_data = GROUP data BY (year, month, day) PARALLEL 10; 是否可以更改分区,例如: 1.)在组操作之前洗牌数据 或 2.)更改元组中变量的顺序 或者你建议一种不同的方法 提前谢谢 默认情况下,在大多数情况下,PIG使用Hadoop的默认分区器,即HashPartitioner public i

我想知道PIG实际上是如何决定如何在reduce阶段对数据进行分区的,以及我是否可以影响数据分布以避免不平衡的reducer负载

例如:

grouped_data = GROUP data BY (year, month, day) PARALLEL 10;
是否可以更改分区,例如: 1.)在组操作之前洗牌数据 或 2.)更改元组中变量的顺序

或者你建议一种不同的方法


提前谢谢

默认情况下,在大多数情况下,PIG使用Hadoop的默认分区器,即HashPartitioner

public int getPartition(K key, V value, int numReduceTasks) {
  return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
}
您可以使用
partitionby
提供您自己的策略

B = GROUP data BY (year, month, day) PARTITION BY foo.bar.CustomPartitioner PARALLEL 10;