17,关于spark的一些参数优化

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

上一篇:mapreduce总结


下一篇:MongoDB MapReduce