私は以下のような2つのデータセットを持っています。各データセットには、各行に「、」で区切られた数字があります。RDDの値を別の値に置き換える
データセット1
1,2,0,8,0
2,0,9,0,3
データセット2
7、 5,4,6,3
4,9,2,1,8
私はデータから対応する値に設定された第1のデータのゼロを交換する必要が
だから結果は、この
1,2,4,8のようになります。2.
を設定しました、2,9,9,1,3
3 Iは、以下のコードを使用して値を置き換えます。
val rdd1 = sc.textFile(dataset1).flatMap(l => l.split(","))
val rdd2 = sc.textFile(dataset2).flatMap(l => l.split(","))
val result = rdd1.zip(rdd2).map(x => if(x._1 == "0") x._2 else x._1)
私が得た出力は、フォーマットRDD [文字列]です。しかし、出力形式はRDD [Array [String]]である必要があります。この形式は、それ以上の変換に適しているからです。
あなたは 'valの結果= rdd1.zip(RDD2).MAP(X =>(x._1 == "0" の場合のような何かを探しています)配列(x._2)else配列(x._1)) '? @AlexisC。 –
いいえ、rdd1とrdd2はRDD [Array [String]タイプです。あなたのコードのx._1は配列を参照しています – yAsH
あなたのスニペットからはっきりしていません。 'RDD [String]'と 'x._1 ==" 0 "'を実行すると、分割後のフラット・マッピングです。どのように 'x._1'が配列を参照できるのでしょうか? 2行(各行に1つ)の 'RDD [Array [String]]が必要な場合を除きますか? –