手动指定火花执行器的数量

Posted

技术标签:

【中文标题】手动指定火花执行器的数量【英文标题】:Manually specify number of spark executors 【发布时间】:2019-11-04 18:43:27 【问题描述】:

我有 1000 个镶木地板文件,我希望一个执行器在中间阶段处理每个文件。有没有一种我们可以手动分配此属性的方法?默认情况下,spark 最终会为作业创建 34 个任务,最终会出现偏差

【问题讨论】:

你是如何提交工作的?请分享代码。 @PythonBoi 我可以假设 Spark 在这种情况下使用spark.default.parallelism,这等于分配给任务的核心总和。您使用的是 Spark Core (RDD) API 还是 Spark SQL(Dataframe/Dataset)?什么是存储(S3/HDFS)?看看这个答案***.com/questions/50825835/… 【参考方案1】:

您可以对输入的 DataFrame/RDD 执行 repartition,并对生成的 DF/RDD 执行操作。

changedDF = inputDF.repartition(500)

不要使用 inputDF 使用 changedDF 来执行您的操作,您应该获得 500 次任务。

如果需要,在 DataFrame 中还可以提及要重新分区的列列表changedDF = inputDF.repartition(inputDF.col1)

【讨论】:

以上是关于手动指定火花执行器的数量的主要内容,如果未能解决你的问题,请参考以下文章

如何在独立的火花中将处理限制为指定数量的核心

蜂巢上的火花 - 为啥不“选择*”产生火花应用程序/执行程序?

如何在spark结构化流媒体应用程序中优化执行程序实例的数量?

如何在火花中对每个执行器执行一次操作

为啥火花中的一些音符工作得非常慢?为啥在同一情况下多次执行有不同的执行时间?

火花任务未开始执行