静态配置Spark属性

静态配置属性指的就是我们可以在代码中利用SparkCof中的set()方法来设置Spark的属性,set()方法接受接受的键值对SparkConf.set(key,value)。具体的键值对是什么,下文会有介绍。

def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local").setAppName("RDDTest")
    sparkConf.set("spark.executor.memory","10g")
    val sc = new SparkContext(sparkConf)
  }

动态配置Spark属性

所谓的动态配置Spark属性,其实就是我们在Driver端运行spark-submit的时候指定具体的Spark参数属性。

Spark属性

Spark属性我们可以分为应用程序属性、运行环境属性、Shuffle行为属性、Spark UI属性、压缩合序列化属性、内存管理属性、执行行为属性、网络属性、调度属性、动态分配属性、安全策略属性、SparkSQL配置。SparkStreaming配置

应用程序属性

应用属性是Spark应用程序中必要的参数属性,这些属性大多数都具有合理的默认值。具体应用属性如下表所示。

属性名

默认值

解释

spark.app.name

None

你的spark应用程序的名字,这个名字可以出现在日子里或者UI界面上

spark.dirver.cores

1

在spark集群中,为每个Driver分配的CPU核数

spark.driver.maxResultSize

1g

spark操作所有分区的序列化结果的总限制大小,如果大小超出这个限制,则中止作业。,这样可以保护驱动驱动程序内存不足。

spark.driver.memory

1g

指定驱动程序的内存容量

spark.executor.memory

1g

分配给每个Executor的内存容量

spark.local.dir

/tmp

用于存放spark应用程序运行时的数据,例如map输出文件和RDDs在磁盘上的存储。这个目录可以用逗号分隔的多个目录。

spark.logConf

false

是否记录sparkConf的所有INFO日志

spark.master

None

指定spark的Master节点的

spark.submiy.deployModel

None

配置提交spark应用程序是客户端模式还是集群模式

运行环境配置参数

spark.driver.extraClassPath

None

指定Driver的额外的ClassPath。注意:在客户端模式下不能够使用SparkConf来设置此属性,但是可以在shell中用 --driver–class–path命令来指定Driver的ClassPath

spark.driver.extraJavaOptions

None

该参数的意义在于可以设置驱动程序上JVM的参数。注意1:此选项的设置-Xmx的大小是不允许的,但是在集群模式下我们可以用spark.driver.memory和在客户端模式下使用–driver–memory来设置-Xmx的大小。注意2:在客户端模式下不能够使用SparkConf来设置此属性,但是可以在shell中用 --driver–java–options命令来设置此属性

spark.executor.extraJavaOptions

None

设置Executor上的JVM参数。例如GC参数和其他日志选项。注意1:此选项的设置-Xmx最大堆大小是不允许的,但是可以使用SparkConf或者spark-submit脚本或者在spark-default.conf中设置,也可以使用spark.executor.memory设置-Xmx最大堆大小。

spark.executor.log.rolling.maxRetainedFiles

None

设置Executor滚动日志保留的最大数量,当超出限制是就删除旧日志,默认是不开启的

spark.executor.log.enableCompression

false

是否启动Executor的日志压缩。如果启动就压缩Executor已滚动的日志,默认情况下是不开启的

spark.executor.logs.rolling.maxSize

None

设置滚动日志文件的最大大小,字节为单位,

spark.executor.logs.rolling.strategy

None

设置日志的滚动策略。默认情况下是禁用的。两种滚动策略,一个是基于时间、一个是基于大小的。对于“时间”,用于spark.executor.logs.rolling.time.interval设置滚动间隔。对于“大小”,用于spark.executor.logs.rolling.maxSize设置滚动的最大文件大小。