2017-02-20 3 views
1

は今、私は次の形式RDD like((int、int)、int)をsparkの1つのマップ関数で3つのキーと値のペアに変換するには?

((int, int), int) 

にRDDを持っていると私は(int型、1)のような3つのキーと値のペアに変換しようとしています。

私は((int型、1)のリストを生成することができますケースを使用しても、その後3つのマップ機能を使用して行い、それらを一緒に結合するが、それは間違いなくそれを実装するための最良の方法ではありません、

ことができ、 (int、1)、((int、1))のリストを生成するにはどうすればよいですか?

答えて

2

下に示すように、それはおそらく、あなたがflatMapをしたい3つのマップ機能が、単一のマップ機能を取るべきではないのですか?

rdd.flatMap { case ((x, y), z) => List((x, 1), (y, 1), (z, 1)) } 

上記のコードは、3つの別個のRDD要素にあなたのRDDにネストされたタプルのそれぞれを拡大し、RDD[(Int, Int)]生成します。

+0

それは動作します!ありがとうございました! – C0deZ

1

inputRDD.map({case ((x,y),z) => ((x,1),(y,1),(z,1))}) 
+0

これは私が最初に思いついたものですが、リスト((int、1)、list(int、1)、(int、1)、(int、1)ではなく、 )))) – C0deZ

関連する問題