首页 > 解决方案 > 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
        )
    ) 

我已经尝试过已经提出的解决方案:

结果:java.util.concurrent.TimeoutException:期货在 [300 秒] 后超时

结果:java.util.concurrent.TimeoutException:期货在 [300 秒] 后超时

结果:java.util.concurrent.TimeoutException:期货在 [7200 秒] 后超时

有人可以帮忙吗?

标签: scalaapache-sparkjoinapache-spark-sql

解决方案


您可以尝试在 sql中替换NOT IN为 with 。NOT exists这有助于减少执行时间。


推荐阅读