scala - org.apache.spark.SparkException:无法在 300 秒内执行广播
问题描述
我正在使用一个主节点和 2 个从节点的集群。
我运行'''spark-submit --class 'PropertyTables' --master spark://172.17.67.122:7077 /etc/rdfbenchmarkingproject_2.12-0.1.jar'''
错误是: org.apache.spark.SparkException:无法在 300 秒内执行广播
在PropertyTables类中,我正在加载 3 个 CSV 文件(1G、1G、100MB 大小)并对它们运行以下 JOIN 查询:
SELECT DISTINCT
D.title AS title
FROM
Publication P
JOIN Document D ON D.document=P.publication
JOIN Reference R ON P.publication=R.cited
WHERE
P.publication NOT IN (
SELECT cited
FROM Reference R2
WHERE R2.document NOT IN (
SELECT cited FROM Reference R3
)
)
我已经尝试过已经提出的解决方案:
- 持久化 3 个表。
结果:java.util.concurrent.TimeoutException:期货在 [300 秒] 后超时
- 添加--conf spark.sql.autoBroadcastJoinThreshold=-1
结果:java.util.concurrent.TimeoutException:期货在 [300 秒] 后超时
- 添加--conf spark.sql.broadcastTimeout=7200
结果:java.util.concurrent.TimeoutException:期货在 [7200 秒] 后超时
有人可以帮忙吗?
解决方案
您可以尝试在 sql中替换NOT IN
为 with 。NOT exists
这有助于减少执行时间。
推荐阅读
- c# - 保存的搜索以编程方式不返回任何结果
- powerbi - 与外部用户共享工作区、报告和应用程序
- node.js - 如何在nodejs中返回一个带有“for”循环和异步的数组?
- r - 具有不同的 .RMD 文件和输出文件名
- github - 我们如何在 GitHub Pull Request Builder 插件上禁用此“管理员可以验证此补丁吗?”?
- visual-studio - Visual Basics - 解决方案未加载
- python - 在按一次向上箭头键后,我创建的角色不会回到确切的平台
- python - 使用 webengine 视频和音频编解码器
- django - 升级 django 2.1 => 2.2 后用户对象 .save() 不保存
- python - 如何在python中使用带有re的findall函数捕获一系列字母?