Scala 在CLI中定义Spark Master与定义';硕士';在Spark应用程序代码中?

Scala 在CLI中定义Spark Master与定义';硕士';在Spark应用程序代码中?,scala,apache-spark,configuration,cluster-computing,spark-submit,Scala,Apache Spark,Configuration,Cluster Computing,Spark Submit,CLI中定义的Spark submit“-master”与定义master的Spark应用程序代码之间有什么区别 在Spark中,我们可以在应用程序代码中指定主URI,如下所示: 或者,我们可以在spark submit中指定主URI作为参数的参数,如下所示: 一个先于另一个吗?他们是否必须在合同上达成一致,因此我在创建SparkSession的程序spark submit和spark应用程序代码中引用了相同URI的两个实例?一个会压倒另一个吗?SparkSession对主参数有什么不同,s

CLI中定义的Spark submit“-master”与定义master的Spark应用程序代码之间有什么区别

在Spark中,我们可以在应用程序代码中指定主URI,如下所示:

或者,我们可以在spark submit中指定主URI作为参数的参数,如下所示:

一个先于另一个吗?他们是否必须在合同上达成一致,因此我在创建SparkSession的程序spark submit和spark应用程序代码中引用了相同URI的两个实例?一个会压倒另一个吗?SparkSession对主参数有什么不同,spark submit主参数有什么不同

任何帮助都将不胜感激。谢谢大家!

引用

spark submit脚本可以从属性文件加载默认spark配置值,并将其传递给应用程序。默认情况下,它将从spark目录中的conf/spark-defaults.conf读取选项。有关更多详细信息,请参阅加载默认配置一节

以这种方式加载默认Spark配置可以避免Spark提交某些标志的需要。例如,如果设置了spark.master属性,则可以安全地从spark submit中省略--master标志。通常,在SparkConf上显式设置的配置值具有最高的优先级,然后是传递给spark submit的标志,然后是默认文件中的值

如果不清楚配置选项来自何处,可以通过运行spark submit和--verbose选项打印出细粒度的调试信息

因此,所有选项都是有效的,并且有一个定义良好的层次结构,如果在多个位置设置相同的选项,该层次结构将定义优先级。从最高到最低:

  • 应用程序中的显式设置
  • 命令行参数
  • 配置文件中的选项

    • 来自Spark文档:

      总的来说

      • 在SparkConf上显式设置的配置值具有最高优先级
      • 然后旗帜传递给spark submit
      • 然后在默认值文件中输入值

      我觉得最灵活的方法是将标志传递给spark submit。

      因此优先级应该是:“代码中的显式spark配置”>“spark submit flags”>“spark配置文件中的spark配置值”?确实如此。