Hive on Spark调优(大数据技术7)

news2024/12/27 20:20:43

7章 数据倾斜优化

7.1 数据倾斜说明

        数据倾斜问题,通常是指参与计算的数据分布不均,即某个key或者某些key的数据量远超其他key,导致在shuffle阶段,大量相同key的数据被发往一个Reduce,进而导致该Reduce所需的时间远超其他Reduce,成为整个任务的瓶颈。

        Hive中的数据倾斜常出现在分组聚合和join操作的场景中,下面分别介绍在上述两种场景下的优化思路。

7.2 分组聚合导致的数据倾斜

示例SQL语句如下:

select
    province_id,
    count(*)
from dwd_trade_order_detail_inc
where dt='2020-06-16'
group by province_id;

7.2.1 优化前执行计划

7.2.2 优化思路 

由分组聚合导致的数据倾斜问题主要有以下两种优化思路:

1)启用map-side聚合

相关参数如下:

--启用map-side聚合
set hive.map.aggr=true;
--hash map占用map端内存的最大比例
set hive.map.aggr.hash.percentmemory=0.5;

启用map-side聚合后的执行计划如下图所示:

2)启用skew groupby优化

其原理是启动两个MR任务,第一个MR按照随机数分区,将数据分散发送到Reduce,完成部分聚合,第二个MR按照分组字段分区,完成最终聚合。

相关参数如下:

--启用分组聚合数据倾斜优化
set hive.groupby.skewindata=true;

 启用skew groupby优化后的执行计划如下图所示:

7.3 join导致的数据倾斜

示例SQL语句如下。

select
    *
from
(
    select
        *
    from dwd_trade_order_detail_inc
    where dt='2020-06-16'
)fact
join
(
    select
        *
    from dim_province_full
    where dt='2020-06-16'
)dim
on fact.province_id=dim.id;

 7.3.1 优化前的执行计划

7.3.2 优化思路

由join导致的数据倾斜问题主要有以下两种优化思路:

1)使用map join

相关参数如下:

--启用map join自动转换
set hive.auto.convert.join=true;
--common join转map join小表阈值
set hive.auto.convert.join.noconditionaltask.size

 使用map join优化后执行计划如下图。

2)启用skew join优化

其原理如下图:

相关参数如下:

--启用skew join优化
set hive.optimize.skewjoin=true;
--触发skew join的阈值,若某个key的行数超过该参数值,则触发
set hive.skewjoin.key=100000;

 需要注意的是,skew join只支持Inner Join。

启动skew join优化后的执行计划如下图所:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/542321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

研报精选230518

目录 【行业230518华西证券】医药行业2023年中期投资策略报告:行业复苏势头显著,创新打开未来空间 【行业230518国金证券】半导体行业深度二:存储拐点将至,新需求点亮曙光 【行业230518太平洋】食品饮料行业23年中期策略&#xff…

chatgpt赋能Python-python3_5如何安装

Python3.5安装指南 Python是一种高级编程语言,它广泛用于Web开发、数据分析、机器学习等领域。在Python的众多版本中,Python3.5是最常用的版本之一。如果你正在考虑学习Python3.5或者需要使用Python3.5进行项目开发,那么接下来的安装指南将会…

管道通信,共享内存

什么是有名管道 有名管道(Named Pipe)是一种特殊的文件类型,也称为 FIFO。它提供了一种进程间通信的机制,允许不相关的进程通过读写共享的文件来交换数据。 与普通文件不同的是,有名管道在文件系统中存在一个路径名&…

【云计算与虚拟化】第四章 实验二 vCenter Server网络部署及基本操作

实验二 vCenter Server网络部署及基本操作 一、实验内容 通过vSphere client 客户端登陆vCenter服务器,为新建的虚拟机Windows7 激活,并修改计算机名为姓名拼音的首字母-学号通过vSphere client 客户端登陆vCenter服务器,将虚拟机window…

【5.15】一、软件测试基础—软件缺陷管理

目录 1.2 软件缺陷管理 1.2.1 软件缺陷产生的原因 1.2.2 软件缺陷的分类 1.2.3 软件缺陷的处理流程 1.2.4 常见的软件缺陷管理工具 1.2 软件缺陷管理 软件测试工作就是查找软件中存在的缺陷,反馈给开发人员使之修改,从而确保软件的质量。 1.2.1 软…

【5.16】一、软件测试基础—软件测试的基本流程

目录 1.6 软件测试的基本流程 1.6.1 软件测试的流程 1.6.2 实例:摩拜单车App开锁用车功能测试流程 1.6 软件测试的基本流程 为了使测试工作标准化、规范化,并且快速、高效、高质量地完成测试工作,需要制订完整且具体的测试流程。 1.6.1 …

ChatGPT将如何影响大学录取和大学申请文书?

ChatGPT是OpenAI于2022年11月推出的人工智能聊天机器人。这个聊天机器人在一个大型文本数据库上训练,能够对各种提示生成对话响应。这款软件的影响是巨大的,整个世界都在讨论这项技术对各个行业的发展意味着什么。 就像所有的新发明一样,人们…

springboot+java+jsp网上超市水果蔬菜果蔬商城购物管理系统

本文首先介绍了设计的背景与研究目的,其次介绍系统相关技术,重点叙述了系统功能分析以及详细设计,最后总结了系统的 通过前面的功能分析可以将超市果蔬管理系统的功能分为管理员,员工和用户三个部分,系统的主要功能包…

进程,会话,守护进程

会话 在Linux中,会话(session)是一组相关联的进程的集合,它们可以接收相同的信号,并且通常由一个领导进程来控制。会话中的所有进程都共享同一个控制终端(controlling terminal),这…

DS3800HPIB 有效执行任务的所有程序

DS3800HPIB是通用电气公司生产的Speedtronic Mark IV系列的一部分。这DS3800HPIB是一种大型电路板,具有八个连接端子,电路板两侧的尺寸各不相同。左下角有一个红色小方块,上面有一个拨动开关。这DS3800HPIB有大约50个天蓝色的小二极管。这DS3…

Jetpack Compose中使用MD样式组件Scaffold及导航底部菜单的实现

Compose给我们提供了一个Material Design样式的首页组件(Scaffold),我们可以直接套用从而完成一个APP的首页界面 由于Scaffold中还包含有其他的组件,所以讲解Scaffold先讲解前置的一些组件 TopAppBar 首先,便是TopAppBar,其本质就是我们Android原生常见的Toolbar,不过其封装的…

Java日常练习—类与对象

习题一: 设计Circle类 【问题描述】用面向对象方法设计Circle类,求面积和周长。并设计测试类,输入半径(double型),可输出面积和周长。 PI用Math类中的PI.结果保留3位小数 【输入形式】输入半径值&#x…

acwing提高——BFS的Flood Fill和最短路模型

Flood Fill 1.Lake Counting 题目http://ybt.ssoier.cn:8088/problem_show.php?pid1249 自己写的&#xff08;好理解&#xff09; #include<bits/stdc.h> using namespace std; typedef pair<int,int> PII; const int N120; int n,m; char a[N][N]; bool st[N]…

Prompt合集

作者 来自&#xff1a;f Prompt主要内容 我想让你充当「英语翻译员」、「拼写纠正员」和「改进员」。 我会用任何语言与你交谈&#xff0c;你会检测语言&#xff0c;翻译它并用我的文本的更正和改进版本用英语回答。 我希望你用更优美优雅的「高级英语单词」和句子替换我简化…

【EMC专题】为什么PCB上的单端阻抗控制在50欧?

每当我们在发板后和PCB板厂沟通说有些走线需要阻抗控制,控制在多少多少。其实我们所说的阻抗是传输线的特性阻抗。特性阻抗是不能用万用表测量出来的,他由传输线的结构以及材料决定,与传输线的长度、信号的幅度、频率等均无关。 特性阻抗的概念 当电磁波在电缆上…

【Unity100个实用小技巧】保证原图片的情况下,动态扩展图片尺寸

☀️博客主页&#xff1a;CSDN博客主页&#x1f4a8;本文由 萌萌的小木屋 原创&#xff0c;首发于 CSDN&#x1f4a2;&#x1f525;学习专栏推荐&#xff1a;面试汇总❗️游戏框架专栏推荐&#xff1a;游戏实用框架专栏⛅️点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd;&#…

Kafka 原理温故之数据存储格式

背景 周末看系统架构的时候&#xff0c;看到一致性要求时&#xff0c;回忆了一下 Kafka 的消息一致性保障机制&#xff0c;顺便复习了一下 Kafka 的基础信息。 消息文件目录 Kafka 的消息存储目录是由 server.properties 文件的 log.dirs/tmp/kafka-logs 设置的&#xff0c;…

轻量应用服务器腾讯云和阿里云哪家更好?

轻量应用服务器阿里云和腾讯云哪个好&#xff1f;云服务器吧认为腾讯云轻量应用服务器还不错&#xff0c;腾讯云轻量服务器30元起&#xff0c;配置可选2核2G3M、2核2G4M、2核4G5M、4核8G12M、8核16G18M和16核32G28M&#xff0c;阿里云轻量应用服务器配置仅可以选择2核2G3M和2核…

c++对象中动态内存分配

c对象中动态内存分配 假设我们有两个类&#xff0c;一个是电子表格单元格类SpreadsheetCell&#xff0c;另外一个是电子表格类Spreadsheet。我们都使用过电子表格&#xff0c;一个电子表格往往都有行与列组成。所以我们的Spreadsheet类是SpreadsheetCell类的二维数组。 下面我…

MySQL—系统管理

文章目录 一、系统数据库二、常用管理工具mysqlmysqladminmysqlbinlogmysqlshowmysqldumpmysqlimport/source 一、系统数据库 MySQL安装后&#xff0c;默认会带4个数据库&#xff1a; 数据库含义mysql存储MySQL服务器正常运行所需要的各种信息 &#xff08;时区、主从、用户、…