数仓中的数据倾斜问题

news/2024/10/22 17:33:58/

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

可以根据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.ppmy.cn/news/1423238.html

相关文章

Mathorcup 甲骨文识别

本资源主要包含第2-4问,第一问直接使用传统图像处理即可,需要有很多步骤,这一步大家自己写就行。 2 第2问,甲骨文识别 2.1 先处理源文件 原文件有jpg和json文件,都在一个文件夹下,需要对json文件进行处理…

损失函数:Cross Entropy Loss (交叉熵损失函数)

损失函数:Cross Entropy Loss (交叉熵损失函数) 前言相关介绍Softmax函数代码实例 Cross Entropy Loss (交叉熵损失函数)Cross Entropy Loss与BCE loss区别代码实例 前言 由于本人水平有限,难免出现错漏&am…

FreeRTOS_day3

1.总结任务调度算法之间的区别,重新实现一遍任务调度算法的代码。 抢占式调度:高优先级的任务可以打断低优先级的任务执行 时间片轮转:相同优先级的任务有相同的时间片(1ms),时间片耗尽任务会强制退出 协…

OpenHarmony轻量系统开发【12】OneNET云接入

12.1 OneNET云介绍 通常来说,一个物联网产品应当包括设备、云平台、手机APP。我将在鸿蒙系统上移植MQTT协议、OneNET接入协议,实现手机APP、网页两者都可以远程(跨网络,不是局域网的)访问开发板数据,并控制…

集群开发学习(一)(安装GO和MySQL,K8S基础概念)

完成gin小任务 参考文档: https://www.kancloud.cn/jiajunxi/ginweb100/1801414 https://github.com/hanjialeOK/going 最终代码地址:https://github.com/qinliangql/gin_mini_test.git 学习 1.安装go wget https://dl.google.com/go/go1.20.2.linu…

攻防世界---reverse---1000Click

1.方法一:直接点击1000(可能是我太闲了,真的点了1000次) 2.方法二 1.将exe文件放在IDA中分析 使用shiftfnf12,查看字符串,使用ctrlf搜索字符串 2.任意打开一个flag,里面有许多flag&#xff0c…

Stability AI 发布 SD3 API:开启人工智能新篇章

文章目录 1.Stable Diffusion 3 API开放了! 2.Stability AI Document地址3.获取API Key4.API方式调用SD3出图接口地址接口请求规范接口请求响应结果 5.Stable Diffusion 3.0、Stable Image Core、Fooocus 2.3.1、MidJounery效果查看 1.Stable Diffusion 3 API开放了! Stabilit…

支付宝支付之SpringBoot整合支付宝创建自定义支付二维码

文章目录 自定义支付二维码pom.xmlapplication.yml自定义二维码类AlipayService.javaAlipayServiceImpl.javaAlipayController.javaqrCode.html 自定义支付二维码 继&#xff1a;SpringBoot支付入门 pom.xml <dependency><groupId>org.springframework.boot<…