数仓中的数据倾斜问题

-  如何来判断是否发生了数据倾斜问题:

可以根据Spark 的webUI 中的相关指标来判断 

spark webUI中的stages 页面的中就是stage数量 : 宽依赖数(shuffle 数量)导致宽依赖的算子数 +n(读取表的数量)

点击不同的stage 可以跳转到对应的task中的

查看每一个task的执行时间如何有明显的和其他的task的执行时间相差很大,以及一个查询任务一致卡在某个点跑了很久都没出结果就是数据倾斜了

数据倾斜的场景: 一个key对应了多个值 的情况

解决1设置配置:

set hive.groupby.skewindata=true

它使得计算变为了二个mr的过程

  • 第一次mr第一个shuffle过程中partition时随机给key 进行标记, 使每一个key随机均匀分布到各个reduce 中去计算(预shuffle)

目的是为了将一个key对应很多值的情况解决掉

  • 第二次mr做正常的shuffle

    数据分布不均匀的问题再第一次mr中已经有很大的改善了

解决2: 

1. AQE Skewedjoin  

2. 广播join  加随机数打散

解决3:

hive中的小文件存储过多的危害

  • 在计算时会对 每一个小文件启动一个map , 很影响计算的性能, 以及磁盘的寻址时间

多个小文件情况处理:

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
 -- 再map执行前合并小文件,减少map的数量

set hive.merge.mapfiles=true; 
-- 在map-only 任务结束后合并小文件, 该参数的默认值也是true 

set hive.merge.mapredfiles=true;
 -- mr 任务结束后合并小文件,默认为false 

set hive.merge.size.per.task=268435456;
 单位byte  -- 设置合并文件的大小

set hive.merge.smallfiles.avgsize=1677216;
 单位字节  -- 当输出的文件平均大小 -> 小于我们设定的阈值时,程序就会单独启动一个独立的reduce task 进行文件的merge 	

顺便简单说一下广播变量的目的: 就是让集群的消耗降到最低

且其中的每一个executor 中有一个blockmanager (区块管理器)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频号小店的红利来了,跟谁打工不是打工,自己开店,给自己打工

大家好,我是电商花花。 自动抖音小店的飞速崛起,打破了电商何惧,给电商行业注入了新能量,新活力。 而作为一直想要进军电商的腾讯,自然也是不想放过这个机会,更是携着视频号带着视频号小店来电商讨一碗饭…

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day11】 —— MyBatis1

市面上主流ORM框架: EJB:重量级、高花费的ORM技术,支持JPA,尤其是EJB3低侵入式 的设计,增加了Annotation Hibernate:开源,支持JPA ,被选作JBoss的持久层解决方案 iBatis:”SQL Mappi…

CCF区块链论文录用资讯--ICSE 2024

ICSE是CCF A类会议 (软件工程/系统软件/程序设计语言) 其2024录用了13篇区块链论文 Smart Contract and DeFi Security Tools: Do They Meet the Needs of Practitioners? 智能合约和 DeFi 安全工具:它们满足从业者的需求吗? St…

node和go的列表转树形, 执行速度测试对比

保证数据一致性,先生成4000条json数据到本地,然后分别读取文本执行处理 node代码 node是用midway框架 forNum1:number 0forNum2:number 0//执行测试async index(){// 生成菜单列表// const menuList await this.generateMenuList([], 4000);const men…

多任务学习,在共享层,究竟在共享什么?

在多任务学习中,共享层所共享的主要是网络结构和参数。具体来说,当多个任务在共享层进行参数硬共享时,它们使用的是相同的网络结构(例如三层全连接神经网络),并且这些网络层的权重(weights&…

java新冠病毒密接者跟踪系统(springboot+mysql源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的新冠病毒密接者跟踪系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 新冠病毒密接者跟…

【计算机组成原理】加法器原理及其优化

苏泽 本专栏纯个人笔记作用 用于记录408 学习的笔记记录(敲了两年码实在不习惯手写笔记了) 如果能帮助到大家当然最好 但由于是工作后退下来备考 很多说法和想法都会结合实际开发的思想 可能不是那么的纯粹应试哈 希望大家挑选自己喜欢的口味食用…

机器人的非接触式充电和无线充电有什么区别?

文 | BFT机器人 在日新月异的技术浪潮中,接触式与非接触式无线充电之间的微妙差异变得愈发重要,这如同在纷繁复杂的迷雾中增添了一层难以捉摸的迷离。而今,一些所谓的“无线”充电站纷纷涌入市场,它们自诩为无需线缆束缚的新时代…

FAT16文件系统

FAT16 大端存储:高位字节放在低地址端,低位字节放在高地址端。 小端存储:低位字节放在低地址端,高位字节放在高地址端。 举一个例子,比如数字0x12 34 56 78在内存中的表示形式为: 大端模式: 低地…

2024年软件开发行业的薪资水平在下滑的原因?

下降的原因主要包括: 科技行业竞争加剧:随着科技行业竞争的加剧,企业为了压缩成本,开始降低程序员的薪资水平。 人才供应过剩:在计算机成为热门学科的同时,社会上出现了对IT业泡沫和虚假繁荣的质疑。大量…

【ROS2笔记七】ROS中的参数通信

7.ROS中的参数通信 文章目录 7.ROS中的参数通信7.1使用CLI工具调整参数7.2参数通信之rclcpp实现7.2.1创建节点7.2.2rclcpp参数API Reference ROS2中的参数是由键值对组成的,参数可以实现动态调整。 7.1使用CLI工具调整参数 启动turtlesim功能包的环境 ros2 run …

java算法day56 | 动态规划part15 ● 392.判断子序列 ● 115.不同的子序列

392.判断子序列 动规五部曲: 确定dp数组(dp table)以及下标的含义 dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。确定递推公式 在确定递推公式的时候,…

第21天:信息打点-公众号服务Github监控供应链网盘泄漏证书图标邮箱资产

第二十一天 一、开发泄漏-Github监控 1.短期查看 1.密码搜索 根据攻击目标的域名在GitHub上进行搜索密码,如果目标网站的文件与搜索到的源码相关,那就可以联想目标网站是否使用这套源码进行开发 原理就是开发者在上传文件的时候忘记更改敏感文件或者…

探索VR数字展厅,对企业未来展示新模式

在数字化浪潮的推动下,企业展示也在经历着一场革命,VR数字展厅正在以一种全新的方式重塑我们的生活和工作空间,不仅重塑了客户的观展体验,也为企业营销打开了新的渠道。 VR数字展厅作为实体展厅的数字化延伸,正以其沉浸…

SpringBoot框架——7.整合MybatisPlus

这篇主要介绍Springboot整合MybatisPlus,另外介绍一个插件JBLSpringbootAppGen,以及一个经常用于测试的基于内存的h2数据库。 Mybatisplus是mybatis的增强工具,和tk-mybatis相似,但功能更强大,可避免重复CRUD语句,先来…

JWT的使用

0、JWT原理 header JWT第一部分是header,header主要包含两个部分,alg指加密类型,可选值为HS256、RSA等等,typJWT为固定值,表示token的类型。 Payload JWT第二部分是payload,payload是token的详细内容,一般包括iss (发行者), exp (过期时间),…

速看!2024中国(厦门)国际康复医疗展览会

2024中国(厦门)国际康复医疗展览会 2024 China (Xiamen) International Rehabilitation Medical Exhibition 时 间:2024年8月13-15日 August 13-15, 2024 地 点:厦门国际会展中心 Xiamen International Conference & Exh…

分布式调度器timer和spring task

1. Timer(了解) 一、Timer使用方式 Task1 public class Task1 extends TimerTask {Overridepublic void run(){System.out.println("com.aware.Task run");} } Task2 public class Task2 extends TimerTask {Overridepublic void run(){…

外包干了18天,技术倒退明显

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…

【研发管理】产品经理知识体系-产品创新管理

导读: 产品创新管理对企业的发展具有深远的影响,它不仅是企业保持竞争优势的关键,也是推动企业持续稳定发展的重要动力。因此,企业应高度重视产品创新管理,并采取有效的策略和方法来推动产品创新活动的开展。对于产品经…
最新文章