如何优化Databricks自动扩缩容,平衡PySpark作业成本与时效
Databricks工作负载成本优化问题
工作负载与约束条件
- 工作负载:通过Databricks调度作业,Driver使用PySpark运行涉及10至200个需读写存储的DataFrame,该负载可通过并行处理提升效率。
- 成本约束:实例按最低1小时计费,作业耗时不足1小时会造成成本浪费;所有作业需在1小时内完成。
现有扩缩容方案的问题(实例类型固定)
不启用自动扩缩容
- 仅用1个worker:50个DataFrame作业耗时30分钟,但200个DataFrame作业耗时2小时,超出1小时时效限制。
- 配置3个worker:200个DataFrame作业耗时45分钟(符合时效),但50个DataFrame作业仅需12分钟,因最低1小时计费规则仍会浪费大量成本。
启用自动扩缩容(最小worker数设为1)
- 该方案对大负载适配性好,但多数作业为小负载:50个DataFrame作业启动5分钟后,集群从1个worker按4个步长扩容至5个,作业15分钟内完成,仍因提前扩容造成明显成本浪费,且1小时时效为硬性限制。
已尝试但无效的方案
- 预先设置实例数:无法实现,工作负载大小仅能在作业启动后确定。
- Spark配置调整executor参数:使用
.config("spark.executor.cores", "1").config("spark.executor.instances", "1")调整executor数量与核数,未生效。 - Driver代码控制自动扩缩容:Databricks不支持该操作。
内容的提问来源于stack exchange,提问作者The indian guy
相关产品推荐
相关产品推荐

