hive优化-数据倾斜优化
2024-09-04 15:05:02
数据倾斜解决方法,通常从以下几个方面进行考量:
业务上丢弃
• 不参与关联:在on条件上直接过滤
• 随机数打散:比如 null、空格、0等“Other”性质的特殊值
倾斜键记录单独处理
• Join:找出倾斜key,把对应数据插入临时表,如果该表是小表,使用map join解决;
• Group by: set hive.groupby.skewindata = true
数据重分布
• 语法:Distribute By
• 场景:为下一个Stage的Map输入做负载均衡
• 代价:多一个Job
举个栗子:count distinct
--count(distinct ),在数据量大的情况下,效率较低,如果是多count(distinct )效率更低,因为count(distinct)是按group by 字段分组,按distinct字段排序,一般这种分布方式是很倾斜的。
*淘宝一天30亿的pv,按性别分组,分配2个reduce,每个reduce处理15亿数据。
*58房产一天1.5亿的pv,统计全国分二手房、租房等业务线的详情页pv、uv等指标,采用多case when的方式,仅分配一个reduce。
消除count disitnct,可以尝试“用户标签”法。
最新文章
- jQuery 运行机制
- oracle分组取第一条
- 试一下SVG
- c#生成MD5字符串
- MAC中查看Python安装路径
- WEB语言转义总结
- 20160808_Linux服务
- [Linux] Netstat 执行过慢,占CPU100%,原因查找
- (5)Quartz学习
- 为sublime安装package control 解决乱码问题 Mac版
- Verilog HDL的程序结构及其描述
- AntData.ORM框架 之 DotnetCore
- 安装Keras
- search for a range(找出一个数在数组中开始和结束位置)
- weblogic10.3 启动报错 Unrecognized option: -jrockit Error: Could not create the Java Virtual Machine
- MyBatis:事务回滚
- JQuery之左侧菜单
- Go语言排序算法实现
- FPGA 中三角函数的实现
- samba服务配置(二)