spark数据倾斜的解决思路

在这里插入图片描述
数据倾斜是:多个分区中,某个分区的数据比其他分区的数据多的多

数据倾斜导致的问题:

  1. 导致某个spark任务耗时较长,导致整个任务耗时增加,甚至出现OOM
  2. 运行速度慢:主要发生在shuffle阶段,同样的key的数据太多了,导致了某个key所在的task需要处理的数据量太大了,远超其他的task的处理时间
    一条经验:一般出现运行速度异常慢,或者OOM的主要原因是数据倾斜

数据倾斜的解决方案:

  1. 过滤不需要的key:有些key是脏数据,直接过滤,降低数据量
  2. 调整并行度:增大partition的数量,这个每个task要处理的数据量就降低了,各个key可以均匀的分配到多个partition中。但是如果某个key的数据量就是很多,还是会出现数据倾斜
  3. 将reduce侧的join转化为map侧join:如用reduceBykey来替换groupByKey,让map侧也发生aggr聚合,减少shuffle的数据量
  4. 随机前缀扩容:如果某个key就是很多,在此key之前加随机数,来打散key,然后聚合
  5. 如果在加载数据时就发生了数据倾斜,可以在加载后进行repartition
  6. 对于join数据倾斜,一般是小表join大表,用map join ,避免reduce join(shuffle join)
    总结:一般在shuffle时容易发生数据倾斜,因此主要思路是降低shuffle的量

spark的map join 和reduce join的区别?

都是将2个数据集进行join连接的操作,但是实现方式不同

  1. map join:小表join 大表, 将小表通过广播的方式,广播到所有excutors节点的内存中,然后在每个excutor节点上将大数据和小数据进行连接,这样可以快速连接,从而提高了join的效率;优点:由于将小数据加载到内存中,join的速度很快;缺点:由于数据会加载到内存中,会导致内存溢出的问题。
  2. reduce join : 大表join大表, 将2个数据集都进行分区,然后将相同的key的数据分发到同一个节点上进行连接操作。因为同一个key的数据被分发到同一个节点上,所以每个节点只需要处理一部分数据,从而减少了每个节点需要处理的数据量,提高了join的效率;优点:通过分布式的方式能够处理大数据集; 缺点:需要进行shuffle网络传输,如果传输速度较慢,可能会导致连接操作的效率较低。

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

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

相关文章

大数据数据仓库,Sqoop--学习笔记

数据仓库介绍 1. 数据仓库概念 数据仓库概念创始人在《建立数据仓库》一书中对数据仓库的定义是:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、数据集成的(Integrated)、相对…

一、深入简出串口(USRT)通信——基本概念。

一、前言 串口到底是什么?简单来说一句话就可以解释,串口就是一种通信协议。 看到这里可能大家会觉得你这不是放屁么,说了跟没说一样。所以这里做前言来描述,大家要先对通信协议有一个下意识地认识才能在学习串口的时候不至于迷茫…

C#中的泛型

目录 一、泛型的类型参数T 二、创建泛型接口 1.接口及约束定义 2.示例 三、创建泛型方法 泛型是C# 和公共语言运行库(CLR)中的一个功能,这是一种可以使程序支持不同类型的技术。它将类型参数的概念引入.NET Framework中,类型…

Mybatis-plus常见标签

1.< 代表小于号&#xff08;<&#xff09;2.> 代表大于号&#xff08;>&#xff09;3.&le; 代表小于或等于符号&#xff08;≤&#xff09;4.&ge; 代表大于或等于符号&#xff08;≥&#xff09;5.< 代表<6.> 代表>7.ne; 代表不等于 <>8…

【图像加密】Arnold置乱和混沌加密-MATLAB代码

Arnold Arnold.m function [img_new] Arnold(a,b,h,w,n,img) % h64; % w64;img_new zeros(h,w) ; %[h, w]size(img) % a 5; % b 6; % n 16; %n为置乱轮数N h;for i1:nfor y1:hfor x1:wxxmod((x-1)b*(y-1),N)1; %a,b可提前指定yymod(a*(x-1)(a*…

LeetCode [简单] 160. 相交链表

给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结果后&#xff0c;链表必须 保持其原始结构 。 160.…

【Flutter 常见问题系列 第 1 篇】Text组件 文字的对齐、数字和字母对齐中文

TextStyle中设置height参数即可 对齐的效果 Text的高度 是根据 height 乘于 fontSize 进行计算的、这里指定heiht即可、不指定的会出现 无法对齐的情况&#xff0c;如下&#xff1a; 这种就是无法对齐的情况

Qt4用子类化ProxyModel和子类化MainWindow实现全表筛选,中文排序和复制粘贴

目录 1 需求 2 子类化ProxyModel实现全表筛选 3 字符串列表实现中文排序 3.1 Qt5中文排序 3.2 Qt4排序 4 表格的复制粘贴 5 应用 1 需求 模型视图编程是Qt开发的基本功&#xff0c;其中有几个关键问题需要解决&#xff1a; 全表筛选&#xff0c;或者说多列搜索中文排序…

Linux服务器SSH客户端断开后保持程序继续运行的方法

目录 1. nohup 命令&#xff1a; 2. tmux 或 screen&#xff1a; 3 final shell 断开后服务器如何继续执行令&#xff1f; 方法一&#xff1a;使用 nohup 命令 方法二&#xff1a;将命令放在后台执行 4 你可以使用 jobs 命令查看当前终端中正在后台运行的任务 &#xff…

决策树(第四周)

一、决策树基本原理 如下图所示&#xff0c;是一个用来辨别是否是猫的二分类器。输入值有三个&#xff08;x1&#xff0c;x2&#xff0c;x3&#xff09;&#xff08;耳朵形状&#xff0c;脸形状&#xff0c;胡须&#xff09;&#xff0c;其中x1{尖的&#xff0c;圆的}&#xf…

叠加原理(superposition principle)、线性系统

叠加原理&#xff08;superposition principle&#xff09;&#xff1a;指对一个系统而言&#xff0c;两个或多个输入产生的输出&#xff0c;等于这几个输入单独引起的输出的和&#xff0c;即输入的叠加等于各输入单独引起的输出的叠加。 线性系统&#xff1a;一个系统&#x…

Centos 7 更改 PostgreSQL 14 默认存储路径

前言&#xff1a; 默认PostgreSQL数据存储路径为&#xff1a;/var/lib/pgsql/14/data 迁移到新的存储路径&#xff1a;/mnt/postgresql/data 1、关闭PostgreSQL服务 systemctl stop postgresql-142、创建目录 # 创建新目录 mkdir -p /mnt/postgresql/data# 更改目录权限 chow…

vscode中pylance无法显示outline无法跳转

当打开的workspce中有较多的文件时&#xff0c;pylance需要分析的文件太多&#xff0c;导致卡住&#xff0c;无法分析到对应的python文件 常见的情况是&#xff0c;当我们在workspace中包含了data文件夹&#xff08;通常是通过软连接方式把数据集链接过来&#xff09;&#xf…

手机无法投屏到电脑(跨屏互联)无法使用

可能是因为windows防火墙的原因&#xff0c;将防火墙关闭即可

常用的Linux的指令

目录 常用指令 1、文件和目录操作&#xff1a; 2、文件查看和编辑 3、系统信息 4、进程管理 5、用户和权限 6、网络操作 7、压缩和解压 8、软件包管理 常用指令 1、文件和目录操作&#xff1a; ls&#xff1a;列出目录内容 cd&#xff1a; 切换目录 pwd&#xff1a;显…

十分钟让你搞懂JVM中的GC垃圾回收机制(分代回收)

文章目录 0. 为什么要有垃圾回收?1. 垃圾回收哪个内存区域?2. 如何找到垃圾(死亡对象的判断)2.1 引用计数法2.2 可达性分析法2.3 两种算法的差别 3. 如何清理垃圾(死亡对象的回收)3.1 标记-清楚法3.2 复制法3.3 标记-整理法 4. JVM使用的回收方法4.1 什么是分代回收4.2 哪些对…

SCA软件成分分析技术原理浅析

SCA软件成分分析工具可以通过静态和动态有两种技术方式实现&#xff1a; 静态分析&#xff1a;通过对源代码或二进制程序进行分析&#xff0c;从而识别被检测项目中包含的开源组件&#xff0c;开源组件本身包含的已知漏洞、组件版本信息、许可证信息等便可以查询得到&#xff…

sqlite外键约束 保证数据一致性

1. 外键约束 在SQLite中&#xff0c;可以通过使用外键&#xff08;Foreign Key&#xff09;约束和CASCADE选项来实现通过外键删除相关信息。 CASCADE选项是指在主键表中删除记录时&#xff0c;相应的外键表中的相关记录也将被自动删除。 -- 创建主键表 CREATE TABLE Persons…

JVM——几种常见的对象引用

目录 1. 软引用软引用的使用场景-缓存 2.弱引用3.虚引用和终结器引用 可达性算法中描述的对象引用&#xff0c;一般指的是强引用&#xff0c;即是GCRoot对象对普通对象有引用关系&#xff0c;只要这层关系存在&#xff0c; 普通对象就不会被回收。除了强引用之外&#xff0c;Ja…

C++局域网从服务器获取已连接用户的列表(linux to linux)

目录 服务器端 代码 客户端 代码解析 服务器端 原理 遇到的阻碍以及解决办法 客户端 原理 遇到的阻碍以及解决办法 运行结果截图 总结 服务器端 代码 #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <netinet…