2017-12-11 3 views
0

たとえば、2つのファイルa.txtとb.txtがあり、2つのファイルのデータを追加したい一緒に。たぶん私の場合は追加ではない、私はスパークの複数の引数で関数に取り組む方法をテストしたいだけで、引数のデータはローカルファイルから生成されたrddから来る。sparkでは、引数のデータはローカルファイルから生成されたrddから得られます。

私たちは、このようなコードとして、一つのファイルのデータに番号を追加することができます。

a_data = sc.textFile("a.txt") 
a_data.map(lambda x: x + 5) 

どのように火花RDDと一緒に、2つのファイルのデータを追加しますか?

+0

? – Shaido

+0

ご返信ありがとうございます。多分私の説明は明確ではない。私は問題の記述を修正します。 –

答えて

0

私はあなたが望むものを理解していません。あなたはRDD bの対応する要素にRDDの各要素を追加したい場合は、各RDDの各要素に順序付けされたインデックスを関連付けることzipWithIndexでそれを行うことができます。このコードではありません

val a = sc.textFile("a.txt").zipWithIndex().map(_.swap) 
val b = sc.textFile("b.txt").zipWithIndex().map(_.swap) 
a.fullOuterJoin(b) 
.map{ case(k, (v_a, v_b)) => v_a.getOrElse(0) + v_b.getOrElse(0) } 

the scaladocを参照してください) 2つのファイルの長さを同じにすることは想定していません(ゼロがない場合はゼロが最後に追加されます)。あなたは、彼らが同じ長さを持っていると仮定した場合、あなたは簡単に書くことができます:あなたは2 RDD [INT]の値を追加しますか/ RDD [ダブル]一緒に単一RDDに

a.join(b).map(_._2).map(_+_) 
関連する問題