2017-02-25 4 views
1

このようなRDDは2つあります。 - RDD1要素は[123,456,789]のようになり、RDD2タプルは[456、999]のようになります。ここでは、RDD1の2番目の要素である456とRDD2の最初の要素である2つのRDDを結合/結合する必要があります。最終的な出力は次のようになります。 - [123、456、789、999]。これを行う方法や、キーが結合の最初の場所にある必要があるのでしょうか? お時間をいただきありがとうございます。キーが同じ場所にないときに2つのRDDに参加する

+0

したがって、RDD1は3要素のタプルで構成され、RDD2は2要素のタプルで構成されますか? –

+0

はい..正しいです。これらの2つのRDDを4つの要素のタプルに結合し、次にこの最後の要素に基づいて最終結合RDDを減らす必要があります。 –

答えて

0

RDDをDataframeに変換し、次に示すように簡単な結合を行うことができます。

rdd1 = sc.parallelize([(123, 456, 789)]) 
rdd2 = sc.parallelize([(456, 999)])  
df1 = rdd1.toDF() 
df2 = rdd2.toDF() 
result = df1.join(df2, df1['_2'] == df2['_1']) 
result.rdd.map(lambda x: (x[0],x[1],x[2],x[4])).collect() 
[(123, 456, 789, 999)] 
+0

このコードをこのRDDがtoDF関数でなければならないかどうかをチェックします。これは、print hasattr(RDD1、 "tdDF")です。これらがすでにRDDの場合は並列化する必要がありますか? –

+0

私はscalaコードを貼り付けました。私はPythonバージョンを再投稿させます –

+0

@DigvijaySawantはpysparkバージョン –

関連する問題