Mapreduce ApachePig-如何在组操作的还原程序之间分配数据
我想知道PIG实际上是如何决定如何在reduce阶段对数据进行分区的,以及我是否可以影响数据分布以避免不平衡的reducer负载 例如: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
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;