Hive数据倾斜的优化配置

本文探讨了Hive数据倾斜的原因,包括数据本身倾斜、过多的JOIN和SQL语句问题,并提出解决方案,如模型设计、控制Mapper和Reducer数量、减小数据规模以及使用LLAP等技术来提高性能和优化数据倾斜。
摘要由CSDN通过智能技术生成

Hive本质

Hive的本质其实就是 Hdfs+MapReduce,HDFS存储、MR执行任务

发生数据倾斜的原因

1.数据本身倾斜

内容倾斜、group by倾斜、小表Join大表

2.过多

Join过多导致Job过多、小文件过多、Mapper或Reducer过多

3.SQL语句使用问题

count(distinct)->全盘扫描

join ... where 笛卡尔乘积

关于数据倾斜见我的博客:

大数据常见问题:数据倾斜的原理及处理方案_AriesLY0411的博客-CSDN博客

解决方案

模型设计

整体最优,考虑全局

合理减少表数量

sqoop:query "select ... join ..."
#数据清洗
ods -> dwd insert into ... select ... join ...

选择合适的数据建模

星型(优先考虑)、雪花、星座

维度表(静态数据)、事实表(动态数据:谁在什么时间做了什么事情)

维度退化(降维)=> 星型

充分了解业务,提前设计好预聚合

分层 => 轻量聚合

基于主题,时间维度表、用户画像、产品三级分类... 

分区 => 避免交换

拉链表

压缩 => 减少体量

配置压缩,工作场景优先LZO

热点数据:内置自动优化

join:非大小表

#默认Join键对应的记录数超过该值则进行倾斜分析
set hive.skewjoin.key=100000;
#默认false,如果Join键倾斜则设为true
set hive.optimize.skewjoin=true
#默认10000,倾斜处理mapper数量上限
set hive.skewjoin.mapjoin.map.tasks=10000;
#默认32M,倾斜最小切片大小
set hive.skewjoin.mapjoin.min.split=32M

map join : 大小表

#默认true
set hive.auto.
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值