Spark Application’s Configuration
提示:有关如何配置Spark和用户程序的详细信息,请参阅官方文档中的Spark Configuration。
必要参数
在Spark应用程序运行之前,必须设置Spark应用程序的两个必要参数 - spark.master和spark.app.name。
Spark属性
每个用户程序都以创建SparkConf实例为开始,该实例包含Master URL(spark.master)信息,Spark应用程序的名称(之后显示在Web UI中并成为spark.app.name)和其他Spark正常运行所需的属性 。 SparkConf实例可以用来创建SparkContext。
Spark属性是调整Spark应用程序执行环境的方法。
你可以在Spark shell中查询Spark属性的值,如下所示:
scala> sc.getConf.getOption("spark.local.dir")
res0: Option[String] = None
scala> sc.getConf.getOption("spark.app.name")
res1: Option[String] = Some(Spark shell)
scala> sc.getConf.get("spark.master")
res2: Option[String] = Some(local[*])
设置Spark属性
Spark应用程序会从以下几个地方查看配置属性(从最不重要到最重要):
-
conf/spark-defaults.conf
Spark属性的默认配置文件 -
--conf or -c
spark-submit命令行选项,以及其他使用spark-submit或spark-class的shell脚本,例如spark-shell。 SparkConf
默认的Spark属性的配置文件是 $SPARK_HOME/conf/spark-defaults.conf,但你可以使用 spark-submit --properties-file 命令行选项覆盖它。
你可以通过 getDefaultPropertiesFile来获取 spark-defaults.conf属性文件的绝对路径,该文件可以位于 SPARK_CONF_DIR环境变量或 $ SPARK_HOME/conf 目录指定的目录中。
默认配置
你可以通过以下代码创建Spark的默认配置:
import org.apache.spark.SparkConf
val conf = new SparkConf
它只是加载spark.*系统属性。
您可以使用 conf.toDebugString 或 conf.getAll 来打印出加载的 spark.*系统属性。
scala> conf.getAll
res0: Array[(String, String)] = Array((spark.app.name,Spark shell), (spark.jars,""), (spark.master,local[*]), (spark.submit.deployMode,client))
scala> conf.toDebugString
res1: String =
spark.app.name=Spark shell
spark.jars=
spark.master=local[*]
spark.submit.deployMode=client
getAppId 方法
conf.getAppId返回spark.app.id 的属性值或者抛出NoSuchElementException异常(如果未设置过spark.app.id)。
基本设置
Spark属性 | 默认值 | 描述 |
---|---|---|
spark.master | Master URL | |
spark.app.id | TaskScheduler.applicationId() | 程序的唯一标识,在创建SparkContext时设置(TaskScheduler启动后立即生成)。 |
spark.app.name | 程序名 |