并行运行任务-pyspark

wwtsj6pe  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(588)

我有一个pysparkDataframe,使用相同的Dataframe创建新的Dataframe,并在最后连接它们。
例如:

  1. source_dataframe = spark.createDataFrame(rdd, schema).cache()
  2. df1 = function1(source_dataframe)
  3. df2 = function2(source_dataframe)
  4. df3 = function3(source_dataframe)
  5. df4 = function4(source_dataframe)

每个函数都是相互独立的,最后将它们连接起来以创建最终的Dataframe。

  1. final_df = df1.join(df2, [id]).join(df3, [id]).join(df4, [id])

在pyspark中有没有一种方法可以并行运行以上所有函数,因为它们彼此独立?或者spark自动并行运行,因为它们彼此独立?
任何帮助都将不胜感激。谢谢。

hujrc8aj

hujrc8aj1#

所以spark是惰性的,除非在函数中应用一个动作,否则不会对任何东西进行求值。每当你应用一个变换时,它只被添加到dag中,当你在最后的df上触发一个动作时,所有的东西都会被计算。
因此,不需要同时执行这些转换。spark在分发时为您执行。
另一点是,由于spark是分布式的,工作负载被分配到多个执行器上,如果您试图利用python的多处理功能,它将增加驱动程序节点上的负载,这可能导致oom问题或执行缓慢。

相关问题