2014-11-04 65 views
1

注意:這個問題與使用Python(Python)的Spark相關,而不僅僅是普通的Python。它使用RDD對象而不僅僅是簡單的Python列表。如何格式化這樣的數據?

所以,我有一個演員和他們的鑄造電影列表。我想創建關鍵值對,其中關鍵是演員,值是他工作的電影。數據格式是這樣的,你有一個演員選項卡與他工作的電影分開。例如,如果他在更多電影中工作,例如Abalov Eduard,則額外的電影將在其下面的行中列出。我已經以如下所示的格式從文件中提取數據。但是,我希望演員姓名能夠反映他所有工作的電影,以便我可以調用映射函數來創建鍵值對。例如,對於阿巴洛夫愛德華,我希望他的名字出現在他所有的電影中。例如,而不是

[u'', u'', u'', u'Severnaya rapsodiya (1974)'] 

我想

[u'Abalov, Eduard', u'Severnaya rapsodiya (1974)'] 

我怎麼能這樣做?我需要使用mappartitions嗎?或者有更簡單的方法來實現這一點?

[ 
[u'Abalos, Rogelio', u'', u'Sa pagitan ng dalawang mata (1963) <22>'], 
[u''], 
[u'Abalos, Ronald A.', u'Alchemy (2013) [Group Member] <21>'], 
[u''], 
[u'Abalos, Tarzan', u'', u'Bagong buwan (2001) [MILF Group] <82>'], 
[u''], 
[u'Abalov, Eduard', u'', u'Chistye prudy (1965) (as E. Abalov)'], 
[u'', u'', u'', u'Novye priklyucheniya neulovimykh (1968) (as E. Abalov)'], 
[u'', u'', u'', u'Severnaya rapsodiya (1974)'], 
[u'', u'', u'', u'Stoyanka poyezda - 2 minuty (1972) (TV)'], 
[u'', u'', u'', u'Stryapukha (1965) (as E. Abalov)'], 
[u'', u'', u'', u'"12 stulev" (1977) (as E. Abalov)'], 
[u''], 
[u'Abalyan, I.', u'', u'Ne delayte biskvity v plokhom nastroenii (2003)'] 
] 
+1

只要保持一個額外的變量,看到的最後演員的名字。如果新列表中沒有演員,請添加它。您可以更新您的現有列表,或者在建立您的字典時進行。 – tdelaney 2014-11-04 17:43:50

+0

我使用Pyspark的火花,而不是普通的蟒蛇。我正在研究RDD對象,而不是普通列表。 – MetallicPriest 2014-11-04 17:53:27

回答

0
actordata = [[u'.....' ]] 
clean_data = [] 
last_actor = None 
for item in actordata: 
    if len(item) < 1: # ignore the [u''] 
     continue 
    last_actor = item[0] if item[0] != u'' else last_actor 
    clean_data.append([last_actor, item[-1]]) 
+0

在簡單的Python中,這將工作,但我使用Spark(Pyspark)。 – MetallicPriest 2014-11-04 17:54:25