手动指定火花执行器的数量
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结构化流媒体应用程序中优化执行程序实例的数量?