场景

数据倾斜是大数据中很常见的一个现象,一般针对数据倾斜我们都会对数据进行加盐 或者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();

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐