SparkSQL 性能调优参数

1,spark.hadoopRDD.ignoreEmptySplits

默认是false,如果是true,则会忽略那些空的splits,减小task的数量。

2,spark.hadoop.mapreduce.input.fileinputformat.split.minsize

是用于聚合input的小文件,用于控制每个mapTask的输入文件,防止小文件过多时候,产生太多的task。

3,spark.sql.autoBroadcastJoinThreshold && spark.sql.broadcastTimeout

用于控制在 spark sql 中使用 BroadcastJoin 时候表的大小阈值,适当增大可以让一些表走 BroadcastJoin,提升性能,但是如果设置太大又会造成 driver 内存压力,而 broadcastTimeout 是用于控制 Broadcast 的 Future 的超时时间,默认是 300s,可根据需求进行调整。

4,spark.sql.adaptive.enabled && spark.sql.adaptive.shuffle.targetPostShuffleInputSize

该参数是用于开启 spark 的自适应执行,后面的 targetPostShuffleInputSize 是用于控制之后的 shuffle 阶段的平均输入数据大小,防止产生过多的task。

关于 spark 的自适应执行相关参数可看这篇文章:https://www.alibabacloud.com/help/zh/doc-detail/93157.htm

5,spark.sql.parquet.mergeSchema

默认 false。当设为 true,parquet 会聚合所有 parquet 文件的 schema,否则是直接读取 parquet summary 文件,或者在没有 parquet summary 文件时候随机选择一个文件的 schema 作为最终的 schema。

6,spark.sql.files.opencostInBytes

该参数默认 4M,表示小于 4M 的小文件会合并到一个分区中,用于减小小文件,防止太多单个小文件占一个分区情况。

7,spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version

1 或者 2,默认是 1. MapReduce-4815 详细介绍了 fileoutputcommitter 的原理,实践中设置了 version=2 的比默认 version=1 的减少了70%以上的 commit 时间,但是1更健壮,能处理一些情况下的异常。

发布了82 篇原创文章 · 获赞 148 · 访问量 12万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览