美文网首页
Hive 数据倾斜

Hive 数据倾斜

作者: 一个神经质的工程师 | 来源:发表于2019-09-30 17:19 被阅读0次

现象:任务卡在map 100% reduce 99%,分布式计算时,

优化目标:使map的结果更均匀的分布到reduce中去

SQL调节

1.join的关联字段选取分布均匀的表作为驱动表,同时可以尽可能的裁剪表,使关联的集合变小。当大小表关联时,使小表先进内存;当大表关联大表时,考虑把空值变成一个随机串concat('hive',rand()),把倾斜数据分布到不同的reduce上。

2.使用group by代替distinct,distinct会将所有的distinct字段放在同一个reducer里面,即存在数据倾斜,而group by会分散到多个reducer里面,避免了某个节点负荷过高而其他节点无负荷的情况

当group by的不同分组的数据量差异很大时,可以设置参数

set hive.map.aggr=true 表示是否在map端聚合

set hive.groupby.skewindata=true 均衡reduce的处理量

3.over函数会导致数据倾斜,尽可能的减少数据量

4.set hive.auto.convert.join=true; 适用于大表关联小表时,将小表自动放入内存中

   set hive.mapjoin.smalltable.filesize = 25000000;  默认25m

show create table 查看表大小

5.set hive.optimize.skewjoin = true; 

   set hive.skewjoin.key = skew_key_threshold (default = 100000)

   hive 在运行的时候没有办法判断哪个key 会产生多大的倾斜,所以使用这个参数控制倾斜的阈值,如果超过这个值,新的值会发送给那些还没有达到的reduce, 一般可以设置成你(处理的总记录数/reduce个数)的2-4倍都可以接受

6.大表与小表关联时,使用/*+ mapjoin(表名)*/将小表放入内存

还可参考 https://www.jianshu.com/p/c5a74ed62fb9

相关文章

  • Hive优化

    Hive数据倾斜优化总结 Hive数据倾斜优化分为配置优化和SQL优化 优先原则: 数据不怕多,避免倾斜。 减少J...

  • hive 优化-1

    join优化-数据倾斜hive.optimize.skewjoin=true; 【TODO 细节】数据倾斜时启动两...

  • Hive数据倾斜

    数据倾斜 map reduce任务执行时,reduce节点任务大部分执行完毕,但是有一或几个reduce任务运行很...

  • Hive 数据倾斜

    http://www.cnblogs.com/qingyunzong/p/8847597.htmlhttp://w...

  • HIVE:数据倾斜

    一、Map倾斜 根本原因:读入的文件块的数据分布不均匀。 1、上游表文件的大小不均匀,并且小文件特别多,导致当前表...

  • Hive 数据倾斜

    现象:任务卡在map 100% reduce 99%,分布式计算时, 优化目标:使map的结果更均匀的分布到red...

  • Hive数据倾斜

    原文链接:https://my.oschina.net/134596/blog/1800029 在做Shuffle...

  • hive 数据倾斜

    1、Hive 不同数据类型关联产生数据倾斜 情形:比如用户表中 user_id 字段为 int,log 表中 us...

  • hive的数据倾斜操作

    hive底层对应的是mr程序。需要注意数据倾斜问题: Hive进阶 数据倾斜 在我们数据清洗过程中,经常会出现一种...

  • Spark 数据倾斜调优

    1.使用Hive ETL预处理数据 方案适用场景:如果导致数据倾斜的是Hive表。如果该Hive表中的数据本身很不...

网友评论

      本文标题:Hive 数据倾斜

      本文链接:https://www.haomeiwen.com/subject/ijoixctx.html