2017-03-29 8 views
1

私はRDD [Array [Array [Double]]のRDDを持っています。基本的に各要素は行列です。私は要素の賢明な追加を行う必要があります。スパークrddの要素を追加

のでRDDの最初の要素は

1 2 
    3 4 

ある場合と第2の要素は、私はZIPに見ている私は

6 8 
    10 12 

を有する必要が終わりに

5 6 
    7 8 

あります私はこの場合に使用できるかどうかはわかりません。

+1

あなたが期待される出力を追加することができますか? –

答えて

1

はい、あなたは、zipファイルを使用できますが、列のため、一度行とのために1回、2回、それを使用する必要があります:

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}}) 
+0

このメソッドは 'RDD [Array [Array]] []]'には有効ですが、 'RDD [RDD [Array [Double]]]'([SPARK-5063](https://issues.apache.org/ jira/browse/SPARK-5063))。 OPと同様の問題があると思います。基本的には、RowMatrixなどの2つの分散行列を減算/追加する必要があります。ただし、マトリックスのサイズが大きいため、収集できません。 – Christopher