在 EMR 集群中运行 Spark 应用程序时在哪里指定 Spark 配置
Posted
技术标签:
【中文标题】在 EMR 集群中运行 Spark 应用程序时在哪里指定 Spark 配置【英文标题】:Where to specify Spark configs when running Spark app in EMR cluster 【发布时间】:2018-10-11 19:16:03 【问题描述】:当我在 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");
【问题讨论】:
【参考方案1】:区别在于优先级。根据spark documentation:
直接在 SparkConf 上设置的属性优先级最高,然后 传递给 spark-submit 或 spark-shell 的标志,然后是选项中的 spark-defaults.conf 文件
【讨论】:
以上是关于在 EMR 集群中运行 Spark 应用程序时在哪里指定 Spark 配置的主要内容,如果未能解决你的问题,请参考以下文章
在 Amazon EMR 集群中运行时,Spark 广播变量返回 NullPointerException
在 emr 集群中使用 spark 从 oracle 中获取数据并进行处理