repartition导致的广播失败,关于错误Failed to get broadcast_544_piece0 of broadcast_544
今天一个生产环境任务出现了性能问题,,经过仔细检查发现是在一个join操作时,原设定广播右表数据广播失败,导致后续步骤进行缓慢,,报错信息
java.io.IOException: org.apache.spark.SparkException:Failed to get broadcast_544_piece0 of broadcast_544
源代码大概是这个样子(变量全部用xx、yy代替了,不影响整个结构)
val Site = draftedSite.join(broadcast(toSite), Seq("joinCon"))
.withColumn("xxx", distanceUDF($"yy", $"yy", $"yy", $"yy"))
.withColumn("xxx", defineSiteDistanceUDF($"yy", $"yy", $"yy", $"yy"))
.filter("xx> 0 and xx< yy")
.withColumn("deleteSite", expr(
"""
|case
|when xx!= xx then if (xx< xx, xx, xx)
|when xx!= xx then if(xx< xx, xx, xx)
|else if(xx> xx, xx, xx)
|end
""".stripMargin)).repartition(xx).cache()
一开始查询网上,大致都是一种说法,类似https://issues.apache.org/jira/browse/SPARK-5594中的sparkContect中的残留信息数据导致不成功,这明显不是我这个问题,我每次都是新起动一个sparkContect的。
后来公司的大神看了这段代码之后,指出 可能是repartition导致的广播失败,去掉repartition(xx),之后任务成功执行。
在key值不够的情况下,强制repartition可能会导致生成一部分空分区,空分区导致了广播的失败。
另外在数据量不定的情况下不建议使用强制广播,建议将tosite注册为临时表之后cache,有spark根据数据量自动判断是否广播
最终修改之后结果如下:
toSite.createOrReplaceTempView("temp")
spark.catalog.cacheTable("temp")
val temp= spark.sql("select * from temp")
val Site = draftedSite.join(toSite, Seq("joinCon"))
.withColumn("xxx", distanceUDF($"yy", $"yy", $"yy", $"yy"))
.withColumn("xxx", defineSiteDistanceUDF($"yy", $"yy", $"yy", $"yy"))
.filter("xx> 0 and xx< yy")
.withColumn("deleteSite", expr(
"""
|case
|when xx!= xx then if (xx< xx, xx, xx)
|when xx!= xx then if(xx< xx, xx, xx)
|else if(xx> xx, xx, xx)
|end
""".stripMargin)).cache()
repartition导致的广播失败,关于错误Failed to get broadcast_544_piece0 of broadcast_544的更多相关文章
- 因为错误关闭Selinux导致CentOS7启动失败(进度条卡死,图形界面加载卡死)
我在CentOS7上安装oracle,非常麻烦,搞半天终于安装完毕,当天我没有发现任何问题,第二天上班打开虚拟机CentOS7就进不去了. 我想起来之前关闭了Selinux,把系统名称改成了redha ...
- 使用不同用户对Oracle数据库进行异机恢复,失败,错误:Backup file not found in NetBackup catalog
最近做某数据库恢复演练,数据库版本是10.2.0.4,恢复控制文件一直报错,报错如下,经过反复折腾,原来恢复机上oracle用户不是oracle导致(我的是oraclev4),查看源库oracle用户 ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.2.Oracleasm Createdisk ASM磁盘失败:Instantiating disk: failed
1.错误信息:Instantiating disk: failed [root@linuxrac1 /]# /usr/sbin/oracleasm createdisk OCR_VOTE /dev/s ...
- flume 集群datanode节点失败导致hdfs写失败(转)
来自:http://www.geedoo.info/dfs-client-block-write-replace-datanode-on-failure-enable.html 这几天由于杭州集群处于 ...
- SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败
原文:SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败 先感谢一下我的同事们最先发现此问题,鸣谢:向飞.志刚.海云 最近在生产环境发现一个诡异的问题: 环境:WIN ...
- 【常见踩坑】USB调试安装失败(Installation failed with message INSTALL_CANCELED_BY_USER)
一.写在前面 最近一直在忙活着项目重构,忙活了一个多月(那是天天加班,不分昼夜呀,ps:这不是我司要求的哈),终于把沉积了三四年的老项目给重构了,目前在测试阶段,也总算有了点闲时来跟大家分享分享一些问 ...
- 【转载】Sqlserver强制密码过期导致数据库登录失败
Sqlserver在设置登录账户信息的时候,有个复选框信息会被默认勾上,即强制实施密码策略,默认勾选上的还有强制密码过期.如果勾上了这个强制密码过期后,则你的账户密码在一定时间登录后会提示Sqlser ...
- adb remount 失败:remount failed: Operation not permitted
adb remount 失败:remount failed: Operation not permitted 关于ADB的使用,这里再说明下:经常使用命令 adb shell - 登录设备sh ...
- 阿里云SLB漏选“健康检查正常的http状态码”导致url重定向失败问题处理
背景: 一客户将线下电商网站迁移到阿里云上,公网出口使用阿里云SLB,SLB后端实例为ECS(webserver)web服务使用nginx.后端APP服务器使用了tomcat:to ...
随机推荐
- dotnet C# 给结构体字段赋值非线程安全
在 dotnet 运行时中,给引用对象进行赋值替换的时候,是线程安全的.给结构体对象赋值,如果此结构体是某个类的成员字段,那么此赋值不一定是线程安全的.是否线程安全,取决于结构体的大小,取决于此结构体 ...
- Redis详解(三)——
redis https://www.cnblogs.com/zhangyinhua/p/14504717.html
- git01_常用命令
git与github介绍 Git是什么 Git是一个开源的[分布式][版本控制系统],用于敏捷高效地处理任何或小或大的项目 版本控制器 CVS/SVN/Git SVN 客户端/服务器 GIT 客户端/ ...
- Django——session保持登录
Django操作session语法: # 1.设置Sessions值 request.session['session_name'] ="admin" # 2.获取Sessions ...
- Python - 面向对象编程 - 实战(6)
需求 设计一个培训机构管理系统,有总部.分校,有学员.老师.员工,实现具体如下需求: 有多个课程,课程要有定价 有多个班级,班级跟课程有关联 有多个学生,学生报名班级,交这个班级对应的课程的费用 有多 ...
- Jenkins(4)- 在centos7.x下完全卸载Jenkins
如果想从头学起Jenkins的话,可以看看这一系列的文章哦 https://www.cnblogs.com/poloyy/category/1645399.html 先关闭tomcat ./shutd ...
- Linux常用命令 - tail命令详解
21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 实时刷 ...
- Spring AOP 事务配置(实现转账事务)
1. 事务特性 事务特性:ACID 原子性:整体 [原子性是指事务包含的所有操作要么全部成功,要么全部失败] 一致性:数据 [一个事务执行之前和执行之后都必须处于一致性状态] 隔离性:并发 [对于任意 ...
- vue开发流程
在安装node.js 测试安装 在cmd 下输入node 如查能正确输出命令提示符,表明安装好node 测试安装npm -v 如果能成功出现版本信息表示安装好npm 安装配置 G码云 或 ...
- Java中short和int的转换
例子[1]: 第一种情况: short a = 1; a = a + 1; // 这一步会报错 System.out.print(a); 编译器会报错,原因如下: 第二种情况: short a = 1 ...