2014-11-03 30 views
-1

所以我正在使用Spark RDD。我有以下格式如何爲這種格式創建鍵值對?

Actor1 Movie1 
     Movie2 
     Movie3 

Actor2 Movie4 
     Movie5 
     Movie6 

製表符分隔文件,我想創建鍵值對,其中關鍵是演員,和值在演員澆鑄的電影。我如何使用Scala或Python來做到這一點?我能夠讀取文本文件並從選項卡中拆分行,如下所示,但我不知道如何形成鍵值對。

lines = sc.textFile("file") 
tuples = lines.map(lambda x: x.split("\t")); 
# how do I create key value pairs??? 

回答

1

你不能,或者至少不應該。火花的重點在於可以並行處理不同的線條;如果前兩行在一個集羣節點上運行,而後兩行在另一個集羣節點上運行,則第二個節點無法知道Movie3與Actor1一起運行。

您可以使用mapPartitions,該函數的行數爲Iterator,並使用var來跟蹤「當前」Actor。如果您對輸入文本文件的拆分方式非常小心,則可能不會丟失任何數據。但我強烈建議你找一個更好的輸入格式。

+0

輸入文件按原樣輸出,我無法更改。 – MetallicPriest 2014-11-04 11:56:11

0

我也試圖解決類似的問題..這個問題的結論是什麼?有用嗎?如何使用mapPartion來解決這類問題?