Hive基础知识(二十三):数据倾斜优化

绝大部分任务 都很快完成,只有一个或者少数几个任务执行的很慢甚至最终执行失败, 这样的现象为数据倾斜现象。

一定要和数据过量导致的现象区分开,数据过量的表现为所有任务都执行的很慢,这个 时候只有提高执行资源才可以优化 HQL 的执行效率。

综合来看,导致数据倾斜的原因在于按照 Key 分组以后,少量的任务负责绝大部分数据 的计算 ,也就是说产生数据倾斜的 HQL 中一定存在分组操作,那么从 HQL 的角度,我们可 以将数据倾斜分为单表携带了 GroupBy 字段的查询和两表(或者多表)Join 的查询

1. 单表数据倾斜优化

1.1. 使用参数

当任务中存在 GroupBy 操作同时聚合函数为 count 或者 sum 可以设置参数来处理数据 倾斜问题。

复制代码
是否在 Map 端进行聚合,默认为 True
set hive.map.aggr = true;
在 Map 端进行聚合操作的条目数目
set hive.groupby.mapaggr.checkinterval = 100000;

有数据倾斜的时候进行负载均衡(默认是 false)

复制代码
set hive.groupby.skewindata = true;

当选项设定为 true,生成的查询计划会有两个 MR Job。

1.2. 增加 Reduce 数量(多个 Key 同时导致数据倾斜)

1)调整 reduce 个数方法一

(1)每个 Reduce 处理的数据量默认是 256MB

复制代码
set hive.exec.reducers.bytes.per.reducer = 256000000 

(2)每个任务最大的 reduce 数,默认为 1009

复制代码
set hive.exec.reducers.max = 1009 

(3)计算 reducer 数的公式

复制代码
N=min(参数 2,总输入数据量/参数 1)(参数 2 指的是上面的 1009,参数 1 值得是 256M)

2)调整 reduce 个数方法二

在 hadoop 的 mapred-default.xml 文件中修改

设置每个 job 的 Reduce 个数

复制代码
set mapreduce.job.reduces = 15;

2. Join 数据倾斜优化

2.1. 使用参数

在编写 Join 查询语句时,如果确定是由于 join 出现的数据倾斜,那么请做如下设置:

复制代码
# join 的键对应的记录条数超过这个值则会进行分拆,值根据具体数据量设置
set hive.skewjoin.key=100000;
# 如果是 join 过程出现倾斜应该设置为 true
set hive.optimize.skewjoin=false;

如果开启了,在 Join 过程中 Hive 会将计数超过阈值 hive.skewjoin.key(默认 100000)的 倾斜 key 对应的行临时写进文件中,然后再启动另一个 job 做 map join 生成结果。通过 hive.skewjoin.mapjoin.map.tasks 参数还可以控制第二个 job 的 mapper 数量,默认 10000。

复制代码
set hive.skewjoin.mapjoin.map.tasks=10000;
相关推荐
卷毛迷你猪12 分钟前
快速实验篇(A9-2)Python vs MapReduce:小批量任务的工具选择
大数据·hadoop
姜穆澜43 分钟前
Apache Hive 4.x 完全学习指南
大数据·hive
Ahtacca2 天前
hadoop部署前置准备
hadoop
tianhuo0032 天前
从MySQL到Apache Doris:生鲜供应链数仓的ETL流水线与SARIMA需求预测全实
数据仓库·数据中台·零售行业供应链数字化
计算机源码社2 天前
基于K-Means聚类的新生儿败血症临床分型与可视化分析系统 基于数据挖掘的新生儿败血症生命体征时序走势与关联性可视化研究
大数据·hadoop·python·数据挖掘·数据分析·spark·毕业设计
SendTomo2 天前
.ico透明图标在线生成下载平台深度解析
大数据·数据结构·数据库·数据仓库·个人开发
计算机源码社2 天前
基于大数据的全球温室气体排放燃料结构与碳强度评估研究-基于Spark的全球温室气体排放多维度检测与评估分析
大数据·hadoop·python·数据挖掘·数据分析·spark·毕业设计
qingwufeiyang_5303 天前
IceBerg学习笔记2
数据仓库·数据湖
Q26433650233 天前
【有i源码】基于大数据的城市交通流量与出行特征可视化分析平台-基于Hadoop的城市交通拥堵关联规则与异常检测研究
大数据·hadoop·机器学习·数据挖掘·数据分析·spark·数据可视化
kaoa0003 天前
Linux入门攻坚——90、Hadoop-2-MapReduce计算框架及Hadoop生态系统概览
linux·hadoop·mapreduce