繁体   English   中英

并行运行任务 - pyspark

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM