【问题标题】:Element wise addition in spark rddspark rdd中的元素明智添加
【发布时间】: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


    【解决方案1】:

    是的,您可以使用 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。但是,由于矩阵的大小很大,无法收集。
    猜你喜欢
    • 2018-12-05
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    相关资源
    最近更新 更多