count distinct shuffle 次数

问题背景:

set hive.execute.engine=spark;
--set hive.execute.engine=MR;
select count(distinct rowkey) cnt  
from db::table
where f_date = 20200326;

这样一条sql 在执行引擎spark 远快于MR

Spark 引擎:

image.png

MR 引擎 :

image.png

结论:

  • spark引擎是2次shuffle,先group by 一次,再1次shuffle求和
  • MR引擎就是一次shuffle,直接在一个reducer端去重
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。