2015-12-13 71 views
2

我有一個RDD和每一個項目的形式如何解開Python中RDD中每個項目的值(列表)?

(key, [ele1, ele2, ele3, ..., elen]) 

每一個項目是一個鍵值對和值是元素的列表中。

我想解開列表中,這樣我可以創建一個新的RDD與含有一種元素每一個項目如下:

(key, ele1) 
(key, ele2) 
(key, ele3) 
. 
. 
. 
(key, ele4) 

我怎樣才能做到這一點PySpark?

我試着做

RDD.flatmap(lambda line: line[1]) 

,但不起作用。

回答

3

像這樣?爲了簡單起見,我使用了str元素。

>>> rdd = sc.parallelize([('key', ['ele1', 'ele2'])]) 
>>> rdd.flatMap(lambda data: [(data[0], x) for x in data[1]]).collect() 
[('key', 'ele1'), ('key', 'ele2')] 
+0

謝謝。我試過這個,但它不起作用。它會拋出一個錯誤「AttributeError:'PipelinedRDD'對象沒有屬性'flatmap'」 –

+0

@ zero323由於你編輯我的回答是rdd特定的,你能解決這個問題嗎?謝謝。 – timgeb

+5

這是一個拼寫錯誤 - 'flatmap'!='flatMap'。 – zero323

相關問題