更新时间:2021-01-14 来源:黑马程序员 浏览量:
Spark SQL是Apache Spark处理结构化数据的模块,优化Spark SQL性能可以实现跟多的Spark操作。本文就来着重介绍Spark SQL性能调优的方法。
Spark.HadoopRDD.ignoreEmptySplits
参数默认是false,如果是true,则会忽略那些空的splits,减小task的数量。
Spark.Hadoop.mapreduce.input.fileinputformat.split.minsize
参数用于聚合input的小文件,控制每个mapTask的输入文件,防止小文件过多时候,产生太多的task.
Spark.sql.autoBroadcastJoinThreshold && Spark.sql.broadcastTimeout
参数用于控制在Spark SQL中使用BroadcastJoin时候表的大小阈值,适当增大可以让一些表走BroadcastJoin,提升性能,但是如果设置太大又会造成driver内存压力,而broadcastTimeout是用于控制Broadcast的Future的超时时间,默认是300s,可根据需求进行调整。
Spark.sql.adaptive.enabled && Spark.sql.adaptive.shuffle.targetPostShuffleInputSize
参数是用于开启Spark的自适应执行,这是Spark比较老版本的自适应执行,后面的targetPostShuffleInputSize是用于控制之后的shuffle 阶段的平均输入数据大小,防止产生过多的task。
Spark.sql.parquet.mergeSchema
参数默认false。当设为true,parquet会聚合所有parquet文件的schema,否则是直接读取parquet summary文件,或者在没有parquet summary文件时候随机选择一个文件的schema作为最终的schema。
Spark.sql.files.opencostInBytes
参数默认4M,表示小于4M的小文件会合并到一个分区中,用于减小小文件,防止太多单个小文件占一个分区情况。
Spark.Hadoop.mapreduce.fileoutputcommitter.algorithm.version
参数的值为1或者2,默认是1. MapReduce-4815 详细介绍了 fileoutputcommitter 的原理,实践中设置了 version=2 的比默认 version=1 的减少了70%以上的 commit 时间,但是1更健壮,能处理一些情况下
猜你喜欢:
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19