distinct聚合优化
本章节仅适用于MRS 3.3.1-LTS及之后版本。
配置场景
当SQL中存在多个count(distinct)聚合函数,且存在cube,rollup等导致数据膨胀的算子时,使用该特性可以有效减少数据的膨胀倍数,且减少shuffle落盘的数据,从而获得性能提升。开启后,count(distinct)算子的实现,将由原来的expand+多轮聚合,变成普通的count_distinct聚合函数。
使用约束
作业已配置足够的内存。
配置参数
参数 |
说明 |
默认值 |
---|---|---|
spark.sql.keep.distinct.expandThreshold |
由cube等引起的数据膨胀多少倍时,触发该优化。需要配置一个大于0的数值来启用。例如1024,代表数据膨胀1024倍及以上时,触发该优化。 |
-1 |
spark.sql.distinct.aggregator.enabled |
是否强制开启distinct聚合优化。开启时,将不再受限于数据膨胀倍数的约束,直接改写distinct聚合。注意:请在确保有收益的情况下,谨慎使用此选项。 |
false |