更新时间:2024-11-26 GMT+08:00
分享

distinct聚合优化

本章节仅适用于MRS 3.3.1-LTS及之后版本。

配置场景

当SQL中存在多个count(distinct)聚合函数,且存在cube,rollup等导致数据膨胀的算子时,使用该特性可以有效减少数据的膨胀倍数,且减少shuffle落盘的数据,从而获得性能提升。开启后,count(distinct)算子的实现,将由原来的expand+多轮聚合,变成普通的count_distinct聚合函数。

使用约束

作业已配置足够的内存。

配置参数

在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数:

参数

说明

默认值

spark.sql.keep.distinct.expandThreshold

由cube等引起的数据膨胀多少倍时,触发该优化。需要配置一个大于0的数值来启用。例如1024,代表数据膨胀1024倍及以上时,触发该优化。

-1

spark.sql.distinct.aggregator.enabled

是否强制开启distinct聚合优化。开启时,将不再受限于数据膨胀倍数的约束,直接改写distinct聚合。注意:请在确保有收益的情况下,谨慎使用此选项。

false

相关文档