首页 > 解决方案 > Apache Spark:禁用 Spark 应用程序中单个作业的动态分配

问题描述

我有一个启动多个 Spark 作业的 Spark 应用程序(这里的 Spark 作业意味着对数据帧的操作,例如将其写入 HDFS,这将启动阶段和任务的 DAG)。我想有选择地为其中一些作业启用动态分配,并为其他作业禁用它。

所以我的问题是,是否可以有选择地启用或禁用应用程序中每个 Spark 作业的动态分配?我尝试使用optionDataFrameWriter 类中的方法禁用单个 Spark 作业中的动态分配,如下所示。

df
 .write
 .option("spark.dynamicAllocation.enabled", "false")
 .parquet("hdfs://target-path")

但它没有成功,通过查看 Spark 的代码库,它似乎不应该像那样工作。唯一的另一个选项似乎是,每当我们想在我的应用程序中切换动态分配属性时,我们都必须拆除当前的 sparkSession 并重新创建一个新的。这是唯一的方法还是有更好的选择来启用和禁用动态分配。

标签: apache-sparkapache-spark-sql

解决方案


推荐阅读