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