[英]Running tasks in parallel - pyspark
我有一個 pyspark dataframe 並使用相同的 dataframe 創建新的數據幀並在最后加入它們。
例如:
source_dataframe = spark.createDataFrame(rdd, schema).cache()
df1 = function1(source_dataframe)
df2 = function2(source_dataframe)
df3 = function3(source_dataframe)
df4 = function4(source_dataframe)
每個 function 都是相互獨立的,最后將它們重新組合起來創建我的最終 dataframe。
final_df = df1.join(df2, [id]).join(df3, [id]).join(df4, [id])
pyspark 中有沒有一種方法可以並行運行上述所有功能,因為它們彼此獨立? 還是 spark 自動並行運行它們,因為它們彼此獨立?
任何幫助將不勝感激。 謝謝。
所以 spark 是延遲評估的,除非你在 function 中應用一個動作,否則不會評估任何東西。每當你應用一個轉換時,它只會被添加到 DAG 中,當你在最終的 df 上觸發一個動作時,所有的東西都會被評估。
因此,無需同時執行這些轉換。 Spark 在分發時為您完成。
另一點是,由於 spark 是分布式的並且工作負載分配給多個執行程序,如果您嘗試利用 python 的多處理,它會增加驅動程序節點上的負載,這可能導致 OOM 問題或執行緩慢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.