2017-02-25 64 views
1

我有兩個RDD,看起來像這樣:RDD1元素看起來像這樣[123,456,789],RDD2元組看起來像這樣[456,999]。現在我需要結合/連接這兩個基於456的RDD,這是RDD1中的第二個元素,RDD2中的第一個元素。最終輸出看起來像這樣: - [123,456,789,999]。有沒有辦法做到這一點,或者做鑰匙需要首先加入? 預先感謝您的時間。當密鑰不在同一地點時連接兩個RDD

+0

so RDD1由3個元素的元組構成,RDD2由2個元素的元組構成? –

+0

是的..這是正確的..我需要將這2個RDD合併爲4個元素的元組,然後根據最後一個元素減少我最後加入的RDD,在這種情況下,這是999。 –

回答

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函數返回false:print hasattr(RDD1,「tdDF」)。如果這些東西已經是RDD,我需要並行嗎? –

+0

我粘貼了Scala代碼..讓我重新發布python版本 –

+0

@DigvijaySawant更新了pyspark版本 –

相關問題