官方文档说明
image
-
spark加载配置有三种方式:
-
在应用程序中通过sparkConf配置
val conf = new SparkConf().setMaster("local[2]").setAppName("CountingSheep")
val sc= new SparkContext(conf)
val spark = SparkSession.builder().config(conf).getOrCreate()
-
在spark-submit提交应用时通过--标签加载配置
--conf 后面跟key=value键值对,多个spark配置需要多个--conf指定的键值对
spark-submit --class mainClassName\
--master yarn \
--deploy-mode client \
--conf spark.eventLog.enabled=true
--conf spark.eventLog.dir=hdfs://10.0.0.1:8020/user/spark/applicationHistory
--driver-memory 4G \
--executor-memory 10G \
--num-executors 15 \
--name OraclePartitionReadTest \
--jars /home/wanghn/jars/ojdbc6-11.2.0.3.jar \
original-spark-projects-2.0-SNAPSHOT.jar
-
在spark-submit提交应用时通过spark-defaults.conf文件加载配置
如果不指定自定义的spark.conf文件,系统会默认加载$SPARK_HOME/conf/spark-defaults.conf
通过--properties-file 指定spark的配置文件。配置文件中的配置通过key value键值对实现,k和v中间用空格隔开。
spark-submit --class mainClassName\
--master yarn \
--deploy-mode client \
--properties-file /home/yourpath/spark-name.conf
......
-
spark配置加载的优先级
1 > 2 > 3
同一配置在新旧版本名称可能不同, 旧版本的配置可以生效,但是如果同时出现新旧版本两种配置,仅新版本配置生效。 -
spark配置的类别
- deploy相关
比如"spark.driver.memory", "spark.executor.instances"等,此类配置在程序运行通过spark-conf加载配置时没有立即生效,或是说这些配置依赖选择的cluster manager和deploy-mode。因此此类配置一般放在spark-submit命令行中加载,或是写在配置文件中。 - runtime相关
此类配置与runtime control相关,比如"spark.task.maxFailures"等,这类配置可以用三种方式任一种