首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spark异常“无法广播大于8 8GB的表”,'spark.sql.autoBroadcastJoinThreshold':'-1‘不工作

Spark异常“无法广播大于8GB的表”是由于Spark默认情况下会尝试将小于等于8GB的表广播到所有的执行器节点上,以提高查询性能。然而,当表的大小超过8GB时,Spark会抛出该异常。

要解决这个问题,可以通过调整Spark的配置参数来修改广播阈值。具体来说,可以通过设置spark.sql.autoBroadcastJoinThreshold参数来控制广播阈值的大小。该参数的默认值为8GB,可以通过将其设置为一个较大的值来避免广播异常。

在Spark中,可以通过以下方式设置spark.sql.autoBroadcastJoinThreshold参数:

代码语言:txt
复制
spark.conf.set("spark.sql.autoBroadcastJoinThreshold", "-1")

上述代码将spark.sql.autoBroadcastJoinThreshold参数设置为-1,表示禁用广播操作。这样,无论表的大小如何,Spark都不会尝试广播表。

需要注意的是,禁用广播操作可能会导致性能下降,特别是对于较小的表。因此,在实际应用中,应根据具体情况权衡性能和资源消耗。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云Spark服务:腾讯云提供的托管式Spark服务,可帮助用户快速搭建和管理Spark集群,提供高性能的大数据处理能力。了解更多信息,请访问腾讯云Spark服务

请注意,以上答案仅供参考,具体的解决方案可能因实际情况而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SparkSQL执行时参数优化

近期接手了不少大数据任务调度补数据工作,补数时发现资源消耗异常大且运行速度却不怎么给力. 发现根本原因在于sparkSQL配置有诸多问题,解决后总结出来就当抛砖引玉了....2G 以下为SparkSQL调优相关设置 以下列表中动态资源分配相关建议使用 //1.下列Hive参数对Spark同样起作用。...//2.运行行为 set spark.sql.autoBroadcastJoinThreshold; // 大 JOIN 小,小广播阈值 set spark.dynamicAllocation.enabled...后,最小分区数 set spark.Hadoop.mapreduce.input.fileinputformat.split.maxsize; //当几个stripe大小大于该值时,会合并到一个task...set spark.sql.windowExec.buffer.spill.threshold; //当用户SQL中包含窗口函数时,并不会把一个窗口中所有数据全部读进内存,而是维护一个缓存池,当池中数据条数大于该参数表示阈值时

1.2K10

客快物流大数据项目(五十四):初始化Spark流式计算程序

topic数据 * 8)启动运行等待停止 */ //1)初始化spark运行环境 val conf: SparkConf = new SparkConf()...//设置join操作时可以广播到worker节点最大字节大小,可以避免shuffer操作 .set("spark.sql.autoBroadcastJoinThreshold", "67108864...、​​​​​​​设置执行 join 操作时能够广播给所有 worker 节点最大字节大小 对于broadcast join模式,会将小于spark.sql.autoBroadcastJoinThreshold...值(默认为10M)广播到其他计算节点,走shuffle过程,所以会更加高效。...所以这个配置最大字节大小是用于当执行连接时,该广播到所有工作节点。通过将此值设置为-1广播可以被禁用。

87231

SparkSQL3种Join实现

广播需要小于spark.sql.autoBroadcastJoinThreshold所配置值,默认是10M (或者加了broadcast joinhint) 2....这个方案只能用于广播较小,否则数据冗余传输就远大于shuffle开销;另外,广播时需要将被广播表现collect到driver端,当频繁有广播出现时,对driver内存也是一个考验。...SparkSQL规定broadcast hash join执行基本条件为被广播必须小于参数spark.sql.autoBroadcastJoinThreshold,默认为10M。...分区平均大小超过spark.sql.autoBroadcastJoinThreshold所配置值,默认是10M 2. 基不能被广播,比如left outer join时,只能广播 3....经过上文分析,可以明确每种Join算法都有自己适用场景,数据仓库设计时最好避免大与大join查询,SparkSQL也可以根据内存资源、带宽资源适量将参数spark.sql.autoBroadcastJoinThreshold

2.2K30

Spark join种类(>3种)及join选择依据

做过Spark/flink流处理应该都用过一种流和维join,维对于Spark来说可以是driver端获取后广播到每个Executor,然后在executor端执行流task时候join,...Flink进行维join可以用方式比较多了,比如直接open方法里从外部加载静态hashmap,这种就无法更新,因为Flink不像Spark可以每个批次或者若干批次加载一次维。...上面所说就是比较常见hashjoin简单表达,将维通过join条件key构建为一个hashtable,就拿java 8HashMap来说吧,就是一个数组+链表(链表过长会变为红黑树),数组下标就是...先判断,假设join统计信息现实,一张大小大于0,且小于等于用户配置自动广播阈值则,采用广播。...假设两张都满足广播需求,选最小

88930

工作经验分享:Spark调优【优化后性能提升1200%】

背景 业务数据不断增大, Spark运行时间越来越长, 从最初半小时到6个多小时 某日Spark程序运行6.5个小时后, 报“Too large frame...”异常 org.apache.spark.shuffle.FetchFailedException...抛出异常原因 Spark uses custom frame decoder (TransportFrameDecoder) which does not support frames larger...异常,就是发生在业务数据处理最后一步left join操作 2.2....“脏数据”(非法数据) 业务无关数据 3.分析join操作, 左右特征, 判断是否可以进行小广播 broadcast (1)这样可避免shuffle操作,特别是当大特别大 (2)默认情况下,...join时候, 如果数据量低于spark.sql.autoBroadcastJoinThreshold参数值时(默认值为10 MB), spark会自动进行broadcast, 但也可以通过强制手动指定广播

1.4K10

Spark Adaptive Execution调研

这种做法就是MapJoin,在Spark中,也叫做BroadcastHashJoin。原理是将小数据以broadcast变量加载到内存,然后广播到各个Executor上,直接在map中做join。...假设A(1M)和B(4G)做join时,并已经进行了Shuffle Write,转换成BroadcastHashJoin过程如下: 将A数据加载成broadcast 假设上游B有5个partition...如果设置该参数,该阈值与 spark.sql.autoBroadcastJoinThreshold 值相等 3、自动处理数据倾斜 还是在Shuffle Write之后解决问题。...比如表A和B做join,A在shuffle write完,partition 0有4G数据,其他partition都只有1,200M。...如果一个 Partition 大小大于 spark.sql.adaptive.skewedPartitionSizeThreshold 同时大于各 Partition 大小中位数与该因子乘积,或者行数大于

1.8K10

Spark SQL如何选择join策略

在了解join策略选择之前,首先看几个先决条件: 1. build table选择 Hash Join第一步就是根据两之中较小那一个构建哈希,这个小就叫做build table,大则称为...build table条件,join类型需满足(第1种是在业务开发中写SQL主要适配): 1....满足什么条件才能被广播 如果一个大小小于或等于参数spark.sql.autoBroadcastJoinThreshold(默认10M)配置值,那么就可以广播。...,我们也可以通过直接在Spark SQL中显示使用hint方式(/*+ BROADCAST(small_table) */),直接指定要广播,源码如下: private def canBroadcastByHints...size小于spark.sql.autoBroadcastJoinThreshold * spark.sql.shuffle.partitions(默认200)时,即可构造本地HashMap plan.stats.sizeInBytes

1.1K20

Spark 3.0 新特性 之 自适应查询与分区动态裁剪

说起这个可以先回想下Spark发展历史,在1.x时代Spark通过RDD编程形成DAG图,这个阶段可以说没啥优化完全是按照规则来执行;在2.x时代,引入了代价计算,Spark会通过提前进行代价计算,...像Spark会配置一个参数 spark.sql.autoBroadcastJoinThreshold 来决定小于这个配置就认为是小,然后采用广播策略(默认10MB)。...一般广播套路是把小拷贝到driver端,然后分发到每个executor工作节点上,因此如果数据太大,会导致来回复制数据太多,性能低下,因此BHJ仅适用于广播。...比如某个初始时候15M,达不到广播join要求,但是该在查询过程中有个filter条件可以让仅保留8M有效数据,此时就可以采用广播join了。...其他方面由于工作内容涉及不多,因此就先不过多整理了,感兴趣可以去官网或者观看上面的分享视频。需要额外一提是,官方文档也有两个很重要调整: 1 增加了SQL相关文档 ?

1.4K30

【大数据】Spark优化经验&案例--数据倾斜

十秒看完 1.业务处理中存在复杂多表关联和计算逻辑(原始数据达百亿数量级) 2.优化后,spark计算性能提升了约12倍(6h-->30min) 3.最终,业务性能瓶颈存在于ES写入(计算结果,ES...背景 业务数据不断增大, Spark运行时间越来越长, 从最初半小时到6个多小时 某日Spark程序运行6.5个小时后, 报“Too large frame...”异常 org.apache.spark.shuffle.FetchFailedException...异常,就是发生在业务数据处理最后一步left join操作 2.2....非法数据) 业务无关数据 分析join操作, 左右特征, 判断是否可以进行小广播 broadcast 这样可避免shuffle操作,特别是当大特别大 默认情况下, join时候, 如果数据量低于...spark.sql.autoBroadcastJoinThreshold参数值时(默认值为10 MB), spark会自动进行broadcast, 但也可以通过强制手动指定广播 visitor_df.join

2.9K85

sparksql调优之第一弹

1,jvm调优 这个是扯不断,理还乱。建议能加内存就加内存,没事调啥JVM,你都不了解JVM和你任务数据。 spark调优系列之内存和GC调优 2,内存调优 缓存 spark2....+采用: spark.catalog.cacheTable("tableName")缓存spark.catalog.uncacheTable("tableName")解除缓存。 spark 1....属性 默认值 描述 spark.sql.broadcastTimeout 300 广播等待超时时间,单位秒 spark.sql.autoBroadcastJoinThreshold 10485760 (...设置为-1可以禁止该功能。当前统计信息仅支持Hive Metastore 广播变量使用其实,有时候没啥用处。在任务超多,夸stage使用数据时候才能凸显其真正作用。...任务一趟跑完了,其实广播广播无所谓了。。。 4,分区数据调控 分区设置spark.sql.shuffle.partitions,默认是200.

2.9K80

Adaptive Execution 让 Spark SQL 更高效更智能

另外,如果小 RDD 过大,无法存于 Executor 内存中,则无法使用 BroadcastJoin 对于基础 Join,可在生成执行计划前,直接通过 HDFS 获取各表大小,从而判断是否适合使用...但对于中间 Join,无法提前准确判断中间大小从而精确判断是否适合使用 BroadcastJoin 《Spark SQL 性能优化再进一步 CBO 基于代价优化》一文介绍 CBO 可通过统计信息与各操作对数据统计信息影响...Stage 0 每个 Task Shuffle Write 数据,同时与广播得到 Stage 1 全量数据进行 Join 注:广播数据存于每个 Executor 中,其上所有 Task 共享,...如果设置该参数,该阈值与 spark.sql.autoBroadcastJoinThreshold 值相等 除了本文所述 SortMergeJoin 转 BroadcastJoin,Adaptive...如果一个 Partition 大小大于 spark.sql.adaptive.skewedPartitionSizeThreshold 同时大于各 Partition 大小中位数与该因子乘积,或者行数大于

92610

Spark重点难点08】Spark3.0中AQE和DPP小总结

由于这个原因,当 Spark 估计参加 join 数据量小于广播大小阈值时,其会将 Join 策略调整为 Broadcast Hash Join。...比如下面这个例子,右实际大小为15M,而在该场景下,经过filter过滤后,实际参与join数据大小为8M,小于了默认broadcast阈值10M,应该被广播。...我们可以看下这个场景,Table A join Table B,其中Table Apartition A0数据远大于其他分区。...如果不做这个优化,SMJ将会产生4个tasks并且其中一个执行时间远大于其他。经优化,这个join将会有5个tasks,但每个task执行耗时差不多相同,因此个整个查询带来了更好性能。...但是使用DPP前提条件比较苛刻,需要满足以下条件: 事实必须是分区 只支持等值Join 维度过滤之后数据必须小于广播阈值:spark.sql.autoBroadcastJoinThreshold

2.3K41

Spark调优 | 不可避免 Join 优化

广播到每个计算节点,然后将buildIter放到hash中,如下图所示。...这个不用我们担心,spark sql自动帮我们完成,当buildIter估计大小超过参数spark.sql.autoBroadcastJoinThreshold设定值(默认10M),那么就会自动采用...hash join实现 除了上面两种join实现方式外,spark还提供了hash join实现方式,在shuffle read阶段不对记录排序,反正来自两格具有相同key记录会在同一个分区,只是在分区内排序...: buildIter总体估计大小超过spark.sql.autoBroadcastJoinThreshold设定值,即不满足broadcast join条件; 开启尝试使用hash join开关,...spark.sql.join.preferSortMergeJoin=false; 每个分区平均大小超过spark.sql.autoBroadcastJoinThreshold设定值,即shuffle

3.9K20

Spark SQL 之 Join 实现

广播到每个计算节点,然后将buildIter放到hash中,如下图所示。...这个不用我们担心,spark sql自动帮我们完成,当buildIter估计大小超过参数spark.sql.autoBroadcastJoinThreshold设定值(默认10M),那么就会自动采用...hash join实现 除了上面两种join实现方式外,spark还提供了hash join实现方式,在shuffle read阶段不对记录排序,反正来自两格具有相同key记录会在同一个分区,只是在分区内排序...: buildIter总体估计大小超过spark.sql.autoBroadcastJoinThreshold设定值,即不满足broadcast join条件 开启尝试使用hash join开关,spark.sql.join.preferSortMergeJoin...=false 每个分区平均大小超过spark.sql.autoBroadcastJoinThreshold设定值,即shuffle read阶段每个分区来自buildIter记录要能放到内存中

9.1K1111

【硬刚大数据】从零到大数据专家面试篇之SparkSQL篇

2.容易导致task数过多,如果超过参数spark.driver.maxResultSize配置(默认1g),会抛出类似如下异常,影响任务处理 Caused by: org.apache.spark.SparkException...满足什么条件才能被广播 如果一个大小小于或等于参数spark.sql.autoBroadcastJoinThreshold(默认10M)配置值,那么就可以广播。...它工作方式是循环从一张(outer table)中读取数据,然后访问另一张(inner table,通常有索引),将outer每一条数据与inner数据进行join,类似一个嵌套循环并且在循环过程中进行数据比对校验是否满足一定条件...而Spark SQL中BroadcastNestedLoopJoin就类似于Nested Loop Join,只不过加上了广播(build table)而已。...Spark SQL是否产生了笛卡尔积 以join语句指定on条件产生笛卡尔积SQL为例: -- test_partition1和test_partition2是Hive分区 select * from

2.2K30
领券