因此,询问是否有人知道在运行时更改Spark属性(例如spark.executor.memory,spark.shuffle.spill.compress等)的方法,以便更改可能在任务/阶段之间生效工作...
所以我知道......
1)Spark 2.0+(以及之前版本)的文档声明,一旦创建了Spark Context,就无法在运行时更改它。
2)SparkSession.conf.set可能会改变SQL的一些内容,但我正在研究更一般的,包罗万象的配置。
3)我可以使用新属性在程序中启动新的上下文,但这里的情况是在作业已经执行后实际调整属性。
...思想
1)杀死Executor会强制它再次读取配置文件,还是仅仅获取在作业开始时已配置的内容?
2)是否有任何命令强制在spark上下文中“刷新”属性?
希望可能有一种方式或其他想法(提前感谢)......
答案 0 :(得分:0)
否,无法在运行时更改诸如spark.executor.memory
之类的设置。
此外,在“快速切换到新上下文”的方向上可能没有太多的技巧,因为spark的优势在于它可以拾取数据并继续运行。您本质上要求的是一个map-reduce框架。当然,您可以将工作重写为这种结构,然后将工作划分为多个spark作业,但是随后您将失去spark带来的一些便捷性和性能。 (虽然可能不是全部)。
如果您真的认为该请求在概念上有意义,那么可以考虑提出功能请求。可以通过您的火花供应商,也可以直接通过logging a Jira on the apache Spark project。