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 
} 
}