仍然是Scala和Spark的初學者,我認爲我只是在這裏毫無頭腦。我有兩個RDDS,類型之一: -如何在兩個單獨的RDD之間映射鍵/值對?
((String, String), Int) = ((" v67430612_serv78i"," fb_201906266952256"),1)
其他類型的: -
(String, String, String) = (r316079113_serv60i,fb_100007609418328,-795000)
如可以看出,這兩個RDDS的前兩列是相同的格式。基本上他們是ID,一個是'tid',另一個是'uid'。
問題是這樣的:
是否有通過我可以以這樣的方式,該TID和uid在兩者匹配,並且全部爲相同的匹配ID的數據被顯示在比較這兩個RDDS的方法一行沒有任何重複?
例如:如果我得到一個匹配兩個RDDS
((String, String), Int) = ((" v67430612_serv78i"," fb_201906266952256"),1)
(String, String, String) = (" v67430612_serv78i"," fb_201906266952256",-795000)
之間TID和UID的則輸出是: -
((" v67430612_serv78i"," fb_201906266952256",-795000),1)
兩個RDDS ID是不以任何固定的訂購。它們是隨機的,即在兩個RDD中相同的uid和tid序列號可能不一致。
而且,怎麼會當第一RDD型保持不變,但第二RDD變化鍵入解決方案的變化: -
((String, String, String), Int) = ((daily_reward_android_5.76,fb_193055751144610,81000),1)
我必須這樣做,而無需使用SQL星火的。
爲什麼接受?你想要沒有spark的SQL幫助,不是嗎? –
沒有冒犯!正式的是。但是非正式地講,這也教會了我一些新的東西,因爲我從來沒有單獨使用過SQL,或者之前使用過Spark。這就是接受和贊成的原因。 – PixieDev
我認爲你可以使用RDD map,mapPartitions和join方法來實現你的目標。 – Tom