【发布时间】:2017-03-29 14:27:08
【问题描述】:
我有一个 RDD[Array[Array[Double]]] 的 RDD。所以本质上每个元素都是一个矩阵。我需要做元素明智的添加。
所以如果rdd的第一个元素是
1 2
3 4
第二个元素是
5 6
7 8
最后我需要拥有
6 8
10 12
我研究了 zip,但不确定是否可以在这种情况下使用它。
【问题讨论】:
标签: scala apache-spark
我有一个 RDD[Array[Array[Double]]] 的 RDD。所以本质上每个元素都是一个矩阵。我需要做元素明智的添加。
所以如果rdd的第一个元素是
1 2
3 4
第二个元素是
5 6
7 8
最后我需要拥有
6 8
10 12
我研究了 zip,但不确定是否可以在这种情况下使用它。
【问题讨论】:
标签: scala apache-spark
是的,您可以使用 zip,但您必须使用它两次,一次用于行,一次用于列:
val rdd = sc.parallelize(List(Array(Array(1.0,2.0),Array(3.0,4.0)),
Array(Array(5.0,6.0),Array(7.0,8.0))))
rdd.reduce((a,b) => a.zip(b).map {case (c,d) => c.zip(d).map{ case (x,y) => x+y}})
【讨论】:
RDD[Array[Array[Double]]],但不适用于RDD[RDD[Array[Double]]](请参阅SPARK-5063)。我想我对 OP 也有类似的问题。基本上,我需要减去/添加两个分布式矩阵,例如 RowMatrix。但是,由于矩阵的大小很大,无法收集。