我有以下形式的RDD:提取一個元組在Python中的星火
(2, [hello, hi, how, are, you])
我需要映射這些元組,如:
((2,hello), (2, hi), (2, how), ((2, are), (2, you))
我想這在python:
PairRDD = rdd.flatMap(lambda (k,v): v.split(',')).map(lambda x: (k,x)).reduceByKey())
這不會工作,因爲我沒有在地圖轉換k。我不知道該怎麼做?任何意見 ?
感謝您提前。
是的,我做錯了。現在通過適當地放置正確的parens我可以得到(鍵,值)對中的值。我的RDD在這裏是一個拉鍊式RDD,在壓縮右邊部分之前是一個列表。我檢查了它的類型。 但現在拉鍊後,並妥善放置支架。我可以訪問關鍵值。但不知何故,它會產生錯誤,因爲在做v.split(',')時列表不是迭代的。非常感謝Matthew的幫助。 – rahul
@rahul如果這是一個列表,你不需要做'拆分';你應該可以做'v.map(lambda x:(k,x))',因爲'split'是一個將字符串轉換成列表的函數,'map'是列表的函數(和其他類似的對象)。 –
好的..我做到了。所以我的代碼看起來像這樣:PairRDD = rdd.flatMap(lambda(k,v):v.map(lambda x:(k,x))。但它給我錯誤,因爲列表對象沒有屬性映射 – rahul