(3)group by distinct union

(1)distinct

Select  count(distcint uid) from TB
count distinct 容易产生数据倾斜问题,使用了distinct,导致在map端的combine无法合并重复数据,hive针对count(distinct xxx)只产生一个reduce。造成了所有map端传来的数据都在一个tasks中执行,成为了性能瓶颈。
改进为 用group by 代替count distinct
Select count(1) from (Select distinct uid from TB)x

(2)group by
select后面的非聚合列必须出现在group by中,group by 出现数据倾斜概率很少,因为mapreduce中map结束后会有combine by操作做一些聚合。
(3)union

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • web应用程序会对用户的输入进行验证,过滤其中的一些关键字,这种过滤我们可以试着用下面的方法避开。 1、 不使用被...
    查无此人asdasd阅读 7,407评论 0 5
  • 摘要: SQL基础有这些操作(按照执行顺序来排列): from join(left join, right joi...
    猫耳呀阅读 981评论 0 1
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,505评论 0 13
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 4,760评论 0 30
  • 作为自认为的简书上回复和评论最认真最有诚意的用户,我觉得我有责任站出来就这个问题做一次优雅地抛砖引玉。 Biiii...
    LostAbaddon阅读 1,279评论 7 10