关于spark.sql.autoBroadcastJoinThreshold设置

Spark SQL参数调优指南 目录 1 运行行为 1.1 动态生成分区 1.2 broadcast join 使用hint强制做broadcastjoin: 1.3 动态资源分配 1.4 Shuflle相关 1.5 读ORC表优化 2 executor能力 2.1内存 2.2 executor并发度 2.3 executor读取hive表时单task处理数据量/无shuffle作业小文件合并 2.4 GC优化(使用较少,当尝试其他调优方法均无效时可尝试此方法) 3 driver指标: 3.1 内存 3.2 阅读详情
AI摘要

本文详细解析了在使用Spark处理大数据进行join操作时遇到的内存溢出错误,并分享了通过调整spark.sql.autoBroadcastJoinThreshold参数成功解决问题的经验。

今天使用spark对一组大数据进行合并作join操作,一直都报下面的错:

Exception in thread “broadcast-exchange-0” java.lang.OutOfMemoryError: Not enough memory to build and broadcast the table to all worker nodes

想来想去,之前也跑过这类的任务,并且都没有类似的情况,从问题来分析说是内存溢出了,也就是说明广播内存不够用。但我不断设整任务的内存资源,无论是executor还是driver的内存都分配多一倍了,但是还是不起作用。于是回来看看自己配置的优化参数:

spark.config=spark.reducer.maxSizeInFlight:64m,spark.shuffle.file.buffer:128k,spark.shuffle.io.maxRetries:10,spark.shuffle.io.numConnectionsPerPeer:10,spark.shuffle.io.retryWait:30s,spark.rdd.compress:true,spark.io.compression.codec:org.apache.spark.io.SnappyCompressionCodec,spark.io.compression.snappy.blockSize:18k,spark.serializer:org.apache.spark.serializer.KryoSerializer,spark.sql.shuffle.partitions:300,spark.default.parallelism:50,spark.rpc.numRetries:3,spark.rpc.retry.wait:4s,spark.locality.wait.process:10,spark.locality.wait.node:5,spark.locality.wait.rack:3,spark.speculation:true,spark.speculation.multiplier:20,spark.shuffle.consolidateFiles:true,spark.sql.autoBroadcastJoinThreshold:209715200

一个个分析,发现spark.sql.autoBroadcastJoinThreshold是刚增加上的参数,在另一个项目中作一些广播限制的操作,再去官网看下此配置的作用:

意思说这个配置的最大字节大小是用于当执行连接时,该表将广播到所有工作节点。通过将此值设置为-1,广播可以被禁用。

于是将此配置设整下,结果任务正常跑完。此处记录下,以示记忆。

 

TimeoutException: Futures timed out after [300 seconds]异常问题 caused by: java.util.concurrent.TimeoutException: Futures timed out after [300 seconds] scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:223) scala.concurrent.impl.Promise$DefaultProm... 阅读详情

相关推荐

Spark 之 Join

Spark 之 Join

zhixingheyi_tian的博客 1197

Spark参数调优经典实战

一:常用调优参数 #配置文件,使用这个名称application.conf就可以自动读取 #以下是spark的调优参数 #自动广播 spark.sql.autoBroadcastJoinThreshold="10485760" #spark sql shuffle并行度设置 spark.sql.shuffle.partitions="200" #自动广播超时时间 #spark.sql.broad...

weixin_44769733的博客 3238

STM32HAL库 基于外部Flash+FatFs模拟U盘方式进行固件拷贝升级(详解)

STM32HAL库 基于外部Flash+FatFs模拟U盘方式进行固件拷贝升级

qq_36075612的博客 1万+

【大数据】Spark性能优化和故障处理

第一章Spark性能调优 1.1常规性能调优 1.1.1常规性能调优一:最优资源配置 Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略。 资源的分配在使用脚本提交Spark任务时进行指定,标准的Spark任务提交脚本如代码清单2-1所示: 代码清单2-...

weixin_34320159的博客 675

40岁从智驾转具身智能之路

我的工作经历比较复杂,本科毕业后工作2年再次读研的,本科和硕士都是机械专业,硕士毕业后干了5年CAM和机器人再转入到自动驾驶行业。在自动驾驶干了8年,发现自动驾驶已经到了一个瓶颈,再次转行做具身智能。我就谈谈自己的最近这次转型之路。

hzm8341的博客 638

瑞萨芯片串口配置,基于RL78芯片的串口使用配置

在这里隆重给大家介绍瑞萨编辑器CS+ for CA 的自动生成代码功能,只需要配置几个参数,就可以得到你想要的串口配置了,我现在已经忘记怎么手动配置寄存器了,哈哈。选择设置,此时将端口设置成功接下来设置时钟,根据自己的芯片所需设置相应的时钟,自己芯片是什么时钟查看数据手册和原理图可以找到。瑞萨芯片的串口配置其实和ST芯片的串口配置差不多,只是ST芯片的中文数据手册比较多,就更好配置了,找到所需要的串口配置IO口,此时将UART0 配置为引脚P61和P62,瑞萨芯片的串口配置竟然要配置串口。

qq_45315904的博客 4302

Spark_Spark_ERROR关于spark.sql.autoBroadcastJoinThreshold设置

SparkSQL 相关文档 : http://spark.apache.org/docs/2.4.4/sql-performance-tuning.html 今天使用spark对一组大数据进行合并作join操作,一直都报下面的错: Exception in thread “broadcast-exchange-0” java.lang.OutOfMemoryError: Not enough memory to build and broadcast the table to all w...

迎难而上 4859

cs231n作业 assignment 1 q1 q2 q3

请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。

Leezed525的博客 9277

spark广播表大小超过Spark默认的8GB限制

报错: org.apache.hive.service.cli.HiveSQLException: Error running query: java.util.concurrent.ExecutionException: org.apache.spark.SparkException: Cannot broadcast the table that is larger than 8GB: 10 GB

n2670820434的博客 658

模型剪枝实战 | Torch-Pruning 库在YOLOv8上的应用指南

本文详细介绍了如何使用Torch-Pruning库对YOLOv8模型进行结构化剪枝,以实现模型“瘦身”。通过DepGraph(依赖图)技术自动处理层间依赖,确保剪枝安全。文章提供了从环境搭建、核心原理理解到完整剪枝流程的实战指南,并强调了剪枝后的微调与性能评估,帮助开发者在保持精度的同时显著提升模型推理速度。

weixin_29046035的博客 503

2017–2024年中国10米/20米分辨率水稻种植分布数据集

摘要:本数据集提供2017-2024年中国23个省级行政区的水稻种植分布数据,包含单季稻和双季稻分类(GeoTIFF格式,WGS84坐标系)。5个省份分辨率为20米,其余为10米,基于Sentinel卫星数据和TWDTW方法生成。数据公开共享(7.99GB),使用需注明来源并引用相关文献(DOI:10.12199/nesdc.ecodb.rs.2025.012)。涉及学科包括遥感、生态学和地理学,研究成果需发送至国家生态科学数据中心备案。

国科大硕士在读,分享Python/GEE/Matlab/R专业代码实践,涵盖数据分析、算法开发与应用技巧等,以代码会友。 1383

spark_sql 参数调优

spark Sql 参数调优 目录 前言 异常调优 spark.sql.hive.convertMetastoreParquet spark.sql.files.ignoreMissingFiles && spark.sql.files.ignoreCorruptFiles spark.sql.hive.verifyPartitionPath spark.fil...

weixin_43363407的博客 2477

OKCC呼叫中心部署实战指南:从零搭建高效外呼系统

本文提供OKCC呼叫中心系统的完整部署实战指南,从服务器选型、操作系统准备到详细安装步骤和性能优化,帮助企业从零搭建高效外呼系统。重点介绍FreeSWITCH核心组件的安装配置技巧,以及常见问题排查方法,助力企业提升客户服务效率。

weixin_29275257的博客 163

spark指定hive字段_从 Hive 大规模迁移作业到 Spark 在有赞的实践

作者:胡加华团队:大数据团队一、前言在 2019 年 1 月份的时候,我们发表过一篇博客 SparkSQL在有赞大数据的实践,里面讲述我们在 Spark 里所做的一些优化和任务迁移相关的内容。本文会接着上次的话题继续讲一下我们之后在 SparkSQL 上所做的一些改进,以及如何做到 SparkSQL 占比提升到 91% 以上,最后也分享一些在 Spark 踩过的坑和经验希望能帮助到大家。...

weixin_34406909的博客 142

健康保险费用预测:可解释机器学习在精算建模中的实战落地

健康保险费用预测是医疗AI与保险科技交叉领域的核心任务,本质是基于临床变量与社会因素对个体医疗支出进行风险量化。其技术原理需兼顾统计建模能力与监管可解释性,XGBoost+SHAP组合因支持特征归因、边际效应分析和临床可干预推演,成为保险精算场景的主流选择。该技术显著提升保费定价精度、降低偿付风险,并支撑DRG费用预警、团险核保辅助及再保险尾部风险评估等关键应用。本文聚焦真实产线中的时间序列验证、临床分层特征工程与监管红线指标(如Bias@90th、Calibration Slope),深入解析如何让模型不

weixin_33702545的博客 306

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Spark 常见参数学习

Spark on Yarn spark.yarn.maxAttempts研究 等价于yarn.resourcemanager.am.max-attempts,表示AM最多运行次数。设置为1,表示该AM失败后,Yarn不自动重启。 spark.yarn.max.executor.failures 一个Spark Application的executor累积失败次数达到该值,则该Spark App...

chncaesar的专栏 550

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

spark mysql oom_sparksql 复杂查询OOM

平台上执行复杂查询,OOM,根据日志提示的结局方法:-- SET spark.driver.memory=6/8G;【还是OOM】set spark.sql.autoBroadcastJoinThreshold=-1;【解决问题】Exception in thread "broadcast-exchange-0" java.lang.OutOfMemoryError: Not enough mem...

weixin_34476847的博客 693

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

需要加大driver 内存

Exception in thread “broadcast-exchange-0” java.lang.OutOfMemoryError: Not enough memory to build and broadcast the table to all worker nodes. As a workaround, you can either disable broadcast by sett...

weixin_43779531的博客 902

Spark调优 | Spark SQL参数调优

前言 Spark SQL里面有很多的参数,而且这些参数在Spark官网中没有明确的解释,可能是太多了吧,可以通过在spark-sql中使用set -v 命令显示当前spark-sql版本支持的参数。 本文讲解最近关于在参与hive往spark迁移过程中遇到的一些参数相关问题的调优。 内容分为两部分,第一部分讲遇到异常,从而需要通过设置参数来解决的调优;第二部分讲用于提升性能而进行的调优。...

tianyeshiye 1358

Spark SQL explaind中的统计信息-深入了解CBO优化

本文翻译自Statistic in Spark SQl explained Spark SQL 优化器使用两种优化方式:基于规则的和基于代价的。前者依赖于启发式规则,而后者依赖于数据的统计属性。在这篇文章里,我们解释一下在底层这些统计信息是怎么被用到,以及哪些场景下是有用的,并且怎么来使用这些统计信息。 大部分基于启发式的优化规则都没有考虑到被处理的数据属性。比如:基于启发式的PredicatePushDown规则就是基于先过滤再计算的假设。 然而有些场景spark能够通过数据的统计信息来得出更好的计划,这

monkeyboy_tech的博客 2292

claude-skills 之 Spark Engineer 实战指南:Spark SQL 与 DataFrame API 全解

本指南以 claude-skills 仓库中 [spark-engineer](https://link.gitcode.com/i/008f4e99c9cc3ce8e930dfb552584301) 技能的官方参考文档 [spark-sql-dataframes.md](https://link.gitcode.com/i/85960a1ab7b6dde4897babfcd54f63c9) 为核

gitblog_00268的博客 453

Spark从入门到精通

本文系统介绍了Spark基础架构与核心模块。Spark作为基于内存的分布式计算引擎,具备高效、可扩展的特点,其运行架构由Driver、Executor和ClusterManager协同完成任务调度与执行。通过RDD(弹性分布式数据集)实现数据并行处理,支持转换与动作算子,结合血缘依赖与容错机制保障可靠性。此外,文章详述了SparkSQL的结构化数据处理能力、SparkCore的累加器与广播变量机制,以及Spark在批处理、流处理和机器学习等场景的应用,全面展示了Spark生态圈的技术优势与实践方法。

幸运如你的博客 1879

两张上亿的表join,spark sql如何优化?

4、调整spark.sql.inMemoryColumnarStorage.compressed参数,以便更好地判断是否应该使用压缩列存储。7、调整spark.sql.statistics.histogram.enabled参数,以便更好地判断是否应该使用直方图统计。3、调整spark.sql.join.preferSortMergeJoin参数,以便更好地判断是否应该使用排序合并连接。6、调整spark.sql.cbo.enabled参数,以便更好地判断是否应该使用代价优化。

abxzq19870214的博客 2129

sparksql常用优化参数

设置多少个executor用于计算,开启动态资源分配时,任务的executor数目会动态调整。

qq_24022561的博客 549

spark sql 广播模式参数

控制小表自动广播的阈值。:控制广播的超时时间。:影响分区数,从而影响 Join 操作的性能。:控制自适应执行时广播的阈值。根据你的数据规模和场景,合理调整这些参数可以帮助优化 Spark SQL 的性能。

laidongxu666的博客 3082
上一篇: 银行业密钥体系概述
下一篇: 在spark中通过UDF转字符串ip
&捕风的汉子&
博客等级 码龄17年 27粉丝 38原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值