Executor执行能力
spark.executor.memory=4g
用于缓存数据、代码执行的堆内存以及JVM运行时需要的内存。
spark.executor.cores=2
单个executor上可以同时运行的task数,该参数决定了一个executor上可以并行执行几个task。
Driver执行能力
spark.driver.memory=4g
driver端的内存和driver缓存,以及返回的数据的大小有关系。
spark.driver.cores=2
读取能力
读取文件的切分规则:
spark.default.parallelism=1
spark.sql.files.maxPartitionBytes=3200000;
spark.sql.files.openCostInBytes=4194304;
spark.hadoop.mapreduce.input.fileinputformat.split.maxsize=67108864;
spark.hadoop.mapreduce.input.fileinputformat.split.minsize.per.node=67108864;
spark.hadoop.mapreduce.input.fileinputformat.split.minsize.per.rack=67108864;
具体使用请参考我之前的博客。
spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2
spark.hadoop.mapreduce.input.fileinputformat.list-status.num-threads=50
spark.hadoopRDD.ignoreEmptySplits=true
矢量化reader
spark.sql.orc.enableVectorizedReader=true
spark.sql.orc.impl=native
spark.sql.hive.convertMetastoreOrc=true
spark.sql.hive.convertMetastoreParquet=true
shuffle能力
spark.sql.adaptive.enabled =true
spark.sql.adaptive.shuffle.targetPostShuffleInputSize=67108864
spark.sql.shuffle.partitions=1000;
join
spark.sql.autoBroadcastJoinThreshold = 100000000;
hint
自适应执行
需要配置extend shuffle service
spark.sql.adaptive.enabled=true
spark.dynamicAllocation.enabled=true