我在使用MapR发布的Spark项目中工作,其中启用了动态分配。请参考以下参数:
spark.dynamicAllocation.enabled true
spark.shuffle.service.enabled true
spark.dynamicAllocation.minExecutors 0
spark.dynamicAllocation.maxExecutors 20
spark.executor.instances 2
根据我的理解,spark.executor.instances是我们在提交pySpark作业时定义为--num-executors的。
我有以下2个问题:
--num-executors 5
会覆盖spark.executor.instances 2
配置设置吗?spark.executor.instances
的目的是什么?还有一个参数
spark.dynamicAllocation.initialExecutors
它需要spark.dynamicAllocation.minExecutors
的价值。如果定义了spark.executor.instances
并且它大于minExecutors那么它将采用初始执行器的值。
spark.executor.instances
基本上是静态分配的属性。但是,如果启用了动态分配,则初始执行程序集将至少等于spark.executor.instances
。
当你设置--num-executors时,它不会在配置设置中被覆盖。
额外阅读:official doc