我在項目中使用python3時遇到了一個問題。在鍵值對中,如('1','+1 2,3')
,"2,3"
部分是我想檢查的內容。所以我寫了下面的代碼:
(假設這個鍵值對保存在一個RDD稱爲P_LIST)我如何在火花中使用「for」循環與pyspark
def add_label(x):
label=x[1].split()[0]
value=x[1].split()[1].split(",")
for i in value:
return (i,label)
p_list=p_list.map(add_label)
做的那樣,我只能得到結果:('2','+1')
它應該是('2','+1')
和('3','+1')
。看起來,地圖操作中的「for」循環只做了一次。我怎麼能讓它做多次?或者還有什麼其他的方式可以用來實現像地圖操作或減少操作中的「for」循環這樣的函數?
我想提一下,我真正處理的是一個大型數據集。所以我必須使用AWS羣集並實現並行化的循環。集羣中的從節點似乎不瞭解該循環。我如何讓他們知道使用Spark RDD功能?或者如何以另一種流水線方式(這是Spark RDD的主要設計之一)進行這樣的循環操作?
我很想從這個問題中刪除火花標籤,因爲除了'RDD.map'功能之外,沒有任何關於這個的火花特定 –
抱歉沒有提及我的項目的細節。這真的是一個火花應用程序。上面的問題只是我遇到的主要問題的一個摘要。會有一堆鍵值對,如('1','+ 1 2,3'),保存在rdd中。我需要比較標籤和以下子節點,並返回所有鍵 - 值對的每個(子節點,標籤)。整個操作可能是RDD.map()。filter()。reduceByKey()等。它應該使用Spark集羣在AWS上完成。 – Linghao
你嘗試過'rdd.foreach()'嗎? – Kristian