SPARK:为不同的分区维护不同的变量?
SPARK: Maintaining different variables for different partitions?
假设我有一些数据,例如:
A B 值
1 1 40
1 2 3
1 2 5
2 1 6
2 2 10
在数据框中(比如 'df')。我在 A 和 B 上将它划分为:
df.repartition($"A",$"B")
现在,假设我们应该(分别)计算每个分区中可被 2 或 5 整除的值的数量。
维护与可用分区数一样多的变量是不合理的。解决此问题的最佳方法是什么?
(请提供适用于Spark 1.6+的解决方案)
您可以通过 .mapPartition 转换为特定 partitions.for 进行任何特定计算,例如:
rdd.mapPartition{x=>
var s=0
x.map{
//operation on elements of each partition
}
}
假设我有一些数据,例如:
A B 值
1 1 40
1 2 3
1 2 5
2 1 6
2 2 10
在数据框中(比如 'df')。我在 A 和 B 上将它划分为:
df.repartition($"A",$"B")
现在,假设我们应该(分别)计算每个分区中可被 2 或 5 整除的值的数量。 维护与可用分区数一样多的变量是不合理的。解决此问题的最佳方法是什么?
(请提供适用于Spark 1.6+的解决方案)
您可以通过 .mapPartition 转换为特定 partitions.for 进行任何特定计算,例如:
rdd.mapPartition{x=>
var s=0
x.map{
//operation on elements of each partition
}
}