配置Spark自适应数据重分布小文件合并
操作场景
自适应“数据重分布”小文件合并特性开启后,Spark在写入数据前,判断是否需要增加Shuffle合并。如果需要增加Shuffle合并,Spark会启动一个ShuffleJob,并将合并后的数据写入到表目录下。
约束与限制
配置参数
- 安装Spark客户端。
详细操作请参考安装MRS客户端。
- 使用客户端安装用户登录Spark客户端节点。
在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数:
参数
参数说明
取值示例
spark.sql.optimizer.mergeSmallFilesUsingShuffle.enabled
是否启用使用Shuffle来合并小文件的功能,以减少文件数量,提高读取和处理性能。
- false:默认值,即默认不启用此功能。
- true:Spark在写入目标表前会判断是否需要增加Shuffle合并,如果需要合并,会启动一个ShuffleJob。
true
spark.sql.optimizer.mergeSmallFiles.addshuffle.enabled
在不包含Limit、Sort、RepartitionByExpression、Repartition、RebalancePartitions的前提下,开启时直接增加Shuffle,关闭时根据SQL的情况判断是否增加Shuffle。
16MB
spark.sql.adaptive.rebalance.advisoryPartitionSizeInBytes
自适应优化时,控制增加的shuffle的分区建议大小,在Spark聚合小shuffle分区或拆分倾斜的shuffle分区时生效。
256MB
spark.sql.optimizer.mergeSmallFiles.inferRebalanceAndSortOrders.enabled
否启用通过推断重新平衡和排序顺序来合并小文件的功能。
- false:默认值,即默认不启用此功能。
- true:开启后,Spark会在执行计划中推断并应用重新平衡和排序顺序来合并小文件,以减少文件数量,提高读取和处理性能。
true
spark.sql.optimizer.mergeSmallFiles.inferRebalanceAndSortOrdersMaxColumns
指定在推断重新平衡和排序顺序来合并小文件时,列推断使用的最大列数。
3