首页 > 其他 > 详细

distinct 优化

时间:2014-12-14 10:35:15      阅读:373      评论:0      收藏:0      [点我收藏+]
当数据量非常大,在同一个query中计算多个不相关列的distinct时,往往很容易出现数据倾斜现象,导致运行半天都不能得到结果。
比如以下的SQL语句:
select distinct(a), distinct(b), distinct(c) from tableName;

a, b, c没有相关性。

改进方案:把计算的distinct先group by,然后再计算:

 

select distinct(t.a), distinct(t.b), distinct(t.c) from(
	select a, b, c from tableName
	group by a, b, c;
)t;
原理:distinct是在reduce里面计算的,再进行merge,而group by的字段会在map这里分N路hash。group by越多,hash分的越随机。

distinct 优化

原文:http://www.cnblogs.com/yejinru/p/4154119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!