首页 > 解决方案 > 在 EMR 集群中运行 Spark 应用程序时在哪里指定 Spark 配置

问题描述

当我在 EMR 上运行 Spark 应用程序时,将配置添加到 spark/conf spark-defaults.conf 文件与在运行 spark 提交时添加它们有什么区别?

例如,如果我将此添加到我的 conf spark-defaults.conf :

spark.master         yarn
spark.executor.instances            4
spark.executor.memory               29G
spark.executor.cores                3
spark.yarn.executor.memoryOverhead  4096
spark.yarn.driver.memoryOverhead    2048
spark.driver.memory                 12G
spark.driver.cores                  1
spark.default.parallelism           48

是否与将其添加到命令行参数相同:

参数:/home/hadoop/spark/bin/spark-submit --deploy-mode cluster --master yarn-cluster --conf spark.driver.memory=12G --conf spark.executor.memory=29G --conf spark .executor.cores=3 --conf spark.executor.instances=4 --conf spark.yarn.executor.memoryOverhead=4096 --conf spark.yarn.driver.memoryOverhead=2048 --conf spark.driver.cores=1 --conf spark.default.parallelism=48 --class com.emr.spark.MyApp s3n://mybucket/application/spark/MeSparkApplication.jar

?

如果我在我的 Java 代码中添加它会不会是一样的,例如:

SparkConf sparkConf = new SparkConf().setAppName(applicationName);
        sparkConf.set("spark.executor.instances", "4");

标签: apache-sparkhadoopemr

解决方案


区别在于优先级。根据火花文档

直接在 SparkConf 上设置的属性具有最高优先级,然后是传递给 spark-submit 或 spark-shell 的标志,然后是 spark-defaults.conf 文件中的选项


推荐阅读