更新时间:2025-06-10 GMT+08:00
Spark Distinct聚合优化
操作场景
当SQL中存在多个count(distinct)聚合函数,且存在cube,rollup等导致数据膨胀的算子时,使用该特性可以有效减少数据的膨胀倍数,且减少shuffle落盘的数据,从而获得性能提升。开启后,count(distinct)算子的实现,将由原来的expand+多轮聚合,变成普通的count_distinct聚合函数。
约束与限制
- 本章节仅适用于MRS 3.3.1-LTS及之后版本。
- 作业已配置足够的内存。
配置参数
- 安装Spark客户端。
详细操作请参考安装MRS客户端。
- 使用客户端安装用户登录Spark客户端节点。
在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数:
参数
参数说明
取值示例
spark.sql.keep.distinct.expandThreshold
由cube等引起的数据膨胀多少倍时,触发该优化。需要配置一个大于0的数值来启用。例如1024,代表数据膨胀1024倍及以上时,触发该优化。
如果设置为-1,则不启用该优化。
100
spark.sql.distinct.aggregator.enabled
是否强制开启distinct聚合优化。
- false:关闭强制开启distinct聚合优化。
- true:启用强制开启distinct聚合优化,将不再受限于数据膨胀倍数的约束,直接改写distinct聚合。注意:请在确保有收益的情况下,谨慎使用此选项。
false
父主题: Spark Core企业级能力增强