Scala 在rdd中将元素组合到数组中

Scala 在rdd中将元素组合到数组中,scala,apache-spark,spark-streaming,Scala,Apache Spark,Spark Streaming,如何将RDD[(Int,Int)]转换为RDD[Array[(Int,Int)]],其中我将元素与其键组合 比方说 (0,0)、(1,0)、(1,1)、(0,1) 我希望它是一个数组arr1=((0,0),(1,0))和一个arr2((1,1),(0,1)) 因此,生成的rdd将有arr1,arr2作为数组。您基本上尝试的是通过ith元素将rdd[TupleN]分组。你可以用 rdd.groupBy(_._1) 创建 Map[T, RDD[TupleN]] 其中键将是ith元素(即,在您的示

如何将
RDD[(Int,Int)]
转换为
RDD[Array[(Int,Int)]]
,其中我将元素与其键组合

比方说

(0,0)、(1,0)、(1,1)、(0,1)

我希望它是一个数组arr1=((0,0),(1,0))和一个arr2((1,1),(0,1))
因此,生成的rdd将有arr1,arr2作为数组。

您基本上尝试的是通过
i
th元素将
rdd[TupleN]
分组。你可以用

rdd.groupBy(_._1)
创建

Map[T, RDD[TupleN]]
其中键将是
i
th元素(即,在您的示例中为0或1)


然后您可以使用
mapValues(u.toArray)
rdd.groupBy(u.toArray)将此映射的值映射到一个数组。mapValues(u.toArray)
应该可以让您非常接近它。谢谢。如果你给我一个答案,我会选择它。可能是重复的,如果我想把连续的键组合成一个数组?那么键0,1在一个数组中,键2,3在另一个数组中?