Spark SQL调优实战

news2025/1/16 18:58:12

1、新添参数说明

// Driver和Executor内存和CPU资源相关配置

--是否开启executor动态分配开启时spark.executor.instances不生效

spark.dynamicAllocation.enabled=false

--配置Driver内存

spark.dirver.memory=5g

--driver最大结果大小,设置为0代表不限制,driver在拉取结果时,如果结果超过阈值会报异常

spark.driver.maxResultSize=0

--配置executor内存和cpu

spark.executor.memory=5g

spark.executor.cores=8

--executor额外内存,executor内存包括三个部分,heap、off-heap以及overhead,heap和off-heap用于存储executor上任务的执行结果块以及用作执行内存,overhead作为额外内存用于存储虚拟机的开销

spark.yarn.executor.memoryOverhead=6120

--配置executor实例个数,此种方式是固定资源分配方式

spark.executor.instances=25

--是否开启executor堆外内存,以及堆外内存的的大小

spark.memory.offHeap.enabled=true

spark.memory.offHeap.size=2048mb

--spark内存既可以用于存储也可以用于计算,计算内存和存储内存是软边界,这个参数用于设置存储内存的比例

spark.memory.fraction=0.4

// 序列化器相关配置,spark默认采用java序列化器,也提供kryoserializer的实现后者的性能是前者的十倍

spark.kryoserializer.buffer.max=2047mb

spark.kryoserializer.buffer=16384kb

//中间结果网络传输压缩,缓解内存和网络传输压力

spark.shuffle.compress=true

spark.rdd.compress=true

//开启spark任务推断,优化分区任务执行时间不均衡问题,避免严重拖后腿任务

spark.speculation=true

spark.speculation.interval=60s

spark.speculation.multiplier=1.3

spark.speculation.quantile=0.99

//网络通信超时和失败重试相关参数,避免网络质量差或不稳定导致的任务失败

spark.network.timeout=300

spark.shuffle.io.maxRetries=30

spark.shuffle.io.retryWait=10s

//spark对分区结果的大小做了2G的限制,超出了就会报too large dataframe异常,这时需要增加shuffle分区,缓解数据倾斜,但是如果数据本身是倾斜了,下面参数治标不治本,默认300

spark.sql.shuffle.partitions=500

//设置自动广播阈值,在大表join小表时可以将小表作为广播变量,存在内存中,提升join的性能

spark.sql.autoBroadcastJoinThreshold=-1

  1. 参数影响
  • 什么时候需要将spark.dynamicAllocation.enable设置为false?

回答:spark默认按照128m来对文件进行分区如果文件比较大比如40G分区多达300多个采用动态分配策略可能导致占用太多的集群资源使得集群崩溃,如下对比图。

1: 采用动态分配策略executor实例数高达115(116另Driver)

2:采用静态分配策略executor实例数固定为25

  • spark.memory.offHeap.enabled和spark.memory.offHeap.size的影响

回答在运行百万级别job_trsf_dim_chl_cust_spark_df任务时使用默认配置参数报直接内存不足异常导致作业运行失败如下图

3: 堆外内存不足导致任务运行失败

添加以上参数后作业运行成功

  • spark.kryoserializer.buffer大小的调整

回答当使用kryoserializer序列化器时遇到Buffer大小不足提示require ** but available等信息需要调大上述参数

第四、调大spark.sql.shuffle.partitions的目的?

4: 分区结果超过2G错误

回答当出现如上图所示错误很大程度是因为数据发生了倾斜这时可以调整shuffle的分区均衡分区中的数据但如果数据本身是倾斜只能自定义分区规则重写Spark Partitioner或进行SQL调优

  • 为什么要避免对大表进行select * 操作

回答因为Spark是以Client方式向Yarn提交作业查询的结果会返回给Driver端对一个40G的表进行全量查询会导致Driver端崩溃导致如下图所示的错误

5: Jave堆内存

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

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

相关文章

踩坑了,MySQL数据库生成大量奇怪的大文件

作者:田逸(formyz) 一大早就收到某个数据库服务器磁盘满的报警信息,其中数据盘使用率超过90%,如下图所示。 这是一台刚上线不久的MySQL从库服务器,数据盘的总容量是300G。先登录系统,查看主从同…

全链游戏的未来趋势与Bridge Champ的创新之路

为了充分探索全链游戏的特点和趋势,以及Bridge Champ如何作为一个创新案例融入这一发展脉络,我们需要深入了解这两者之间的互动和相互影响。全链游戏,或完全基于区块链的游戏,代表了游戏行业的一个重要转型,它们利用区…

【C++】I/O多路转接详解(二)

在上一篇文章【C】I/O多路转接详解(一) 在出现EPOLL之后,随之而来的是两种事件处理模式的应运而生:Reator 和 Proactor,同步IO模型常用于Reactor模式,异步IO常用于Proactor. 目录 1. 服务器编程框架简介2. IO处理1. R…

【爬虫作业】python爬虫作业——爬取汽车之家

爬取汽车之家期末作业: 代码如下所示: import random import timeimport requests #发送网络请求 import parsel import csv # 1.发送网络请求 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like G…

ELFK日志采 - QuickStart

文章目录 架构选型ELKEFLK ElasticsearchES集群搭建常用命令 Filebeat功能介绍安装步骤Filebeat配置详解filebeat常用命令 Logstash功能介绍安装步骤Input插件Filter插件Grok Filter 插件Mutate Filter 插件常见的插件配置选项:Mutate Filter配置案例: O…

ffmpeg命令生成器

FFmpeg 快速入门:命令行详解、工具、教程、电子书 – 码中人的博客FFmpeg 是一个强大的命令行工具,可以用来处理音频、视频、字幕等多媒体文件。本文介绍了 FFmpeg 的基本用法、一些常用的命令行参数,以及常用的可视化工具。https://blog.mzh…

什么是S参数

S参数是网络参数,定义了反射波和入射波之间的关系,给定频率的S参数矩阵指定端口反射波b的矢量相对于端口入射波a的矢量,如下所示: bS∙a 在此基础上,如下图所示,为一个常见的双端口网络拓扑图:…

GPT-1, GPT-2, GPT-3, GPT-3.5, GPT-4论文内容解读

目录 1 ChatGPT概述1.1 what is chatGPT1.2 How does ChatGPT work1.3 The applications of ChatGPT1.3 The limitations of ChatGPT 2 算法原理2.1 GPT-12.1.1 Unsupervised pre-training2.1.2 Supervised fine-tuning2.1.3 语料2.1.4 分析 2.2 GPT-22.3 GPT-32.4 InstructGPT…

【计算机网络】计算机网络复习资料(期末)

复习要点 一、填空题 1.计算机网络的两个重要基本特点 连通性、共享 2.计算机中的端口号类型 两类端口号 { 服务器端 { 熟知端口号(系统端口号)数值为0~1023 登记端口号,1024~49151 } 客户端使用的端口号:短…

uniapp vue3怎么调用uni-popup组件的this.$refs.message.open() ?

vue2代码 <!-- 提示信息弹窗 --><uni-popup ref"message" type"message"><uni-popup-message :type"msgType" :message"messageText" :duration"2000"></uni-popup-message></uni-popup>typ…

架构学习(四):scrapy下载中间件实现动态切换User-Agent

scrapy下载中间件实现动态与固定UserAgent 前言关卡&#xff1a;实现动态切换User-Agentscrapy设置User-Agent方式梳理User-Agent生效梳理为何选择在下载中间件中实现自定义User-Agent下载中间件 结束 前言 请求头User-Agent是比较常规的反爬手段&#xff0c;不同站点对其检测…

uniapp+uView 【详解】录音,自制音频播放器

效果预览 代码实现 <template><view class"btnListBox"><view class"audioBox" v-if"audioLength"><u-row><u-col span"2"><u--text aligncenter :text"currentTime"></u--text>…

seatunnel数据集成(三)多表同步

seatunnel数据集成&#xff08;一&#xff09;简介与安装seatunnel数据集成&#xff08;二&#xff09;数据同步seatunnel数据集成&#xff08;三&#xff09;多表同步seatunnel数据集成&#xff08;四&#xff09;连接器使用 seatunnel除了单表之间的数据同步之外&#xff0c;…

BC100 有序序列合并

描述 输入两个升序排列的序列&#xff0c;将两个序列合并为一个有序序列并输出。 数据范围&#xff1a; 1≤n,m≤1000 1≤n,m≤1000 &#xff0c; 序列中的值满足 0≤val≤30000 输入描述&#xff1a; 输入包含三行&#xff0c; 第一行包含两个正整数n, m&#xff0c;用空…

前端使用pdf.js进行pdf文件预览的第二种方式:Viewer.html

背景 最近需要实现一个PDF文档预览的功能&#xff0c;按理说&#xff0c;如果只是简单的预览&#xff0c;使用<embed>、<object>等就可以实现。 但是&#xff0c;我们的需求要实现搜索&#xff01;而且&#xff0c;文档还都超大&#xff0c;均300页以上。那<e…

【网站项目】039菜匣子优选生鲜电商系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

网络编程-序列化和反序列化/应用层协议/

预备知识 理解为什么要应用层协议&#xff1f; 在学过套接字编程后&#xff0c;我们对协议的理解更深了一步&#xff0c;协议也就是一种约定&#xff0c;也可以通俗理解为一种口头约定&#xff0c;对于通信双方来说是必须要遵守的。TCP和UDP协议它们是传输层控制协议&#xf…

XAI:探索AI决策透明化的前沿与展望

文章目录 &#x1f4d1;前言一、XAI的重要性二、为什么需要可解释人工智能三、XAI的研究与应用四、XAI的挑战与展望 &#x1f4d1;前言 随着人工智能技术的快速发展&#xff0c;它已经深入到了我们生活的方方面面&#xff0c;从智能手机、自动驾驶汽车到医疗诊断和金融投资&…

[UI5 常用控件] 07.SplitApp,SplitContainer

文章目录 前言1. SplitApp1.1 组件结构1.2 Demo1.3 mode属性 2. SplitContainer 前言 本章节记录常用控件SplitApp&#xff0c;SplitContainer。主要功能是在左侧显示Master页面&#xff0c;右侧显示Detail页面。 Master页面和Detail页面可以由多个Page组成&#xff0c;并支持…

2024数学建模美赛F题Reducing Illegal Wildlife Trade原创论文讲解(含完整python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了数学建模美赛本次F题目非法野生动物贸易完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 F题论文共42页&…