数据倾斜解决方法,通常从以下几个方面进行考量:

业务上丢弃
 
•  不参与关联:在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,可以尝试“用户标签”法。

最新文章

  1. jQuery 运行机制
  2. oracle分组取第一条
  3. 试一下SVG
  4. c#生成MD5字符串
  5. MAC中查看Python安装路径
  6. WEB语言转义总结
  7. 20160808_Linux服务
  8. [Linux] Netstat 执行过慢,占CPU100%,原因查找
  9. (5)Quartz学习
  10. 为sublime安装package control 解决乱码问题 Mac版
  11. Verilog HDL的程序结构及其描述
  12. AntData.ORM框架 之 DotnetCore
  13. 安装Keras
  14. search for a range(找出一个数在数组中开始和结束位置)
  15. weblogic10.3 启动报错 Unrecognized option: -jrockit Error: Could not create the Java Virtual Machine
  16. MyBatis:事务回滚
  17. JQuery之左侧菜单
  18. Go语言排序算法实现
  19. FPGA 中三角函数的实现
  20. samba服务配置(二)

热门文章

  1. C#接收WebSphere MQ中文乱码问题
  2. NS Simulation Basic
  3. 从传输流收到意外的 EOF 或 0 个字节
  4. npm install warning: no description; no repository field
  5. antd Icon
  6. CMake是用于生成make文件的跨平台编译文件
  7. PHP-------文件上传的实例
  8. 一段基于Redis-SortedSet的限流代码
  9. [转] 有关java中两个整数的交换问题
  10. HDU 1286 找新朋友 (欧拉公式或者标记法(其实就是欧拉公式的思想))