SQL优化:使用distribute by 防止数据倾斜

场景

数据倾斜是大数据中很常见的一个现象,一般针对数据倾斜我们都会对数据进行加盐 或者repartition 等等

distribute by rand()

distribute by :用来控制map输出结果的分发,即map端如何拆分数据给reduce端。 会根据distribute by 后边定义的列,根据reduce的个数进行数据分发,默认是采用hash算法。

当 distribute by 后边跟的列是:rand()时,即保证每个分区的数据量基本一致。

DEMO

使用方法:直接在sql结尾处加上 distribute by rand() 
举例:
select A ,B from  $table distribute by rand();

你可能感兴趣的:(Hive)