北风网spark学习笔记
# 假设设置spark.default.parallelism参数,则采用SparkConf.set("spark.default.parallelism", "100")
SparkConf.set("spark.default.parallelism", "100")
spark-submit: --conf spark.default.parallelism=50
spark-defaults.conf: spark.default.parallelism 10
虽然说SparkConf设置属性的优先级是最高的,但是有的时候咱们可能不希望在代码中硬编码一些配置属性,否则每次修改了参数以后,还得去代码里修改,然后得重新打包应用程序,再部署到生产机器上去,非常得麻烦
所以一般使用spark-submit设置属性
在代码中仅仅创建一个空的SparkConf对象,比如:val sc = new SparkContext(new SparkConf())
,然后可以在spark-submit脚本中,配置各种属性的值,比如:
./bin/spark-submit \
--name "My app" \
--master local[4] \
--conf spark.shuffle.spill=false \
--conf "spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps" \
myApp.jar
spark.shuffle.spill, 如果是在代码中,
SparkConf.set("spark.shuffle.spill", "false")
来配置的
此时在spark-submit中配置了,不需要更改代码,就可以更改属性,非常得方便,尤其是对于spark程序的调优,格外方便,因为调优说白了,就是不断地调整各种各样的参数,然后反复跑反复试的过程
spark的属性配置方式
举例来说
shuffle reduce read操作的内存缓冲块儿
spark 1.3.0: spark.reducer.maxMbInFlight
spark 1.5.0: spark.reducer.maxSizeInFlight