当前位置: 首页 > news >正文

【Hive 基础】-- 数据倾斜

1.什么是数据倾斜?

由于数据分布不均匀,导致大量数据集中到一点,造成数据热点。常见现象:一个 hive sql 有100个 map/reducer task, 有一个运行了 20分钟,其他99个 task 只运行了 1分钟。

2.产生数据倾斜的原因有哪些?

我个人认为导致数据倾斜的本质原因是数据量过大,导致程序不能按预期结果输出。一般原因有如下几个:

  • key 分布不均匀

  • sql 不合理

  • 建表时类型有问题

3.导致数据倾斜的算子有哪些?

count、disticnt、group by 、join等。

4.常见的解决方案有哪些?

打散key、分段聚合、列裁剪(最好从开发角度和业务角度考虑)、case when 优化。

5.典型场景举例

  • 空值 join:在不影响业务的情况下,filter 掉再join;或者分段处理。

  • 字段类型不一致导致倾斜:因hash 值不一样,解决:使用相同数据类型

  • 某张表数据量过大:使用列裁剪+中间表

  • 调整 group by 顺序:partition by / group by 小数据量1,小数据量2 ----> 提高查询速度

  • cpu 占用过高:排查 case when 是否可以调整,常见使用数学乘法运算替代。比如 a、b、c 的属性可以使用 boolean 类型,那么使用 0 乘以任何数都是0,1*1 为1 来代替 sum(case when ) 的判断,sql 运行速度可提升数倍。

http://www.lryc.cn/news/39119.html

相关文章:

  • 计算机网络笔记——物理层
  • 算法第十七期——状态规划(DP)之动态压缩
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A模块第八套解析(详细)
  • 【华为OD机试真题 JAVA】数组中是否存在满足规则的数字组合
  • 【OpenCV技能树】——OpenCV基础
  • 人体姿态识别
  • ubuntu下调试驱动
  • 第十四届蓝桥杯三月真题刷题训练——第 9 天
  • 操作系统复习
  • springboot健身房管理系统
  • C语言学习笔记——数组
  • 类和对象 - 中
  • Android之屏幕适配方案
  • SpringBoot+jersey跨域文件上传
  • 数据结构One——绪论
  • JVM篇之内存及GC
  • Linux驱动操作地址(寄存器)的一些方式
  • Java日志框架介绍
  • 编程中遇到的计算机大小端概念
  • 日志与可视化方案:从ELK到EFK,再到ClickHouse
  • 字符函数和字符串函数(上)——“C”
  • 九龙证券|下周解禁市值超400亿元,3股解禁压力较大
  • 一个大型网站架构的演变历程
  • 前端前沿web 3d可视化技术 ThreeJS学习全记录
  • 链表经典笔试题(LeetCode刷题)
  • SpringCloud五大组件
  • Echart的使用初体验,Echarts的基本使用及语法格式,简单图表绘制和使用及图例添加【学习笔记】
  • 聊聊腾讯T13技术专家被开除
  • c++ 常见宏、模板用法【1】
  • 【25】Verilog进阶 - 序列检测