【问题标题】:SparkException error for a Spark-SQL querySpark-SQL 查询的 SparkException 错误
【发布时间】:2019-12-07 22:25:14
【问题描述】:

我在运行以下 Spark-sql 查询时遇到以下错误。

org.apache.spark.SparkExecution: Job aborted due to stage failure: Total size of serialized results of 33 tasks (1046.8 MB) is larger than spark.driver.maxResultSize (1024.0 MB)

源表记录数为:

contrib = 734539064
contrib (with filters 2018) = 683878665
date_dim = 73416

查询是:

select policy,
       order,
       covr_fr,
       covr_to,
       sum(fc_am) - SUM(mc_am) As amount
from (select coalesce(cntr.vre2, cntr.cacont_acc)) as policy,
             cntr.order,
             date_dim_get_sk.date_dim_sk as pst_dt_sk,
             cntr.covr_fr,
             cntr.covr_to
      from (select * from contrib
            where ind_cd = 'BP'
            and flg IN ('001', '004'
            and covr_fr > '2018-01-01' ) cntr
JOIN date_dim ON date_dim.dt = cntr.pstng_dt
JOIN date_dim_get_sk ON date_dim_get_sk.dt = date_dim.dt_lst_dayofmon
GROUP BY policy,
         order,
         covr_fr,
         covr_to
HAVING sum(fc_am) - SUM(mc_am) > 0

目前此查询因上述错误而失败。我试图缓存contrib 表但徒劳无功。 谁能帮我解决上述错误并调整此查询并使其可行。如果需要其他信息,请告诉我。

谢谢

【问题讨论】:

    标签: apache-spark apache-spark-sql pyspark-sql


    【解决方案1】:

    你看过这个topic吗?

    很难仅根据 SQL 查询提出建议。
    作为最简单可行的解决方案尝试增加spark.driver.maxResultSize

    config("spark.driver.maxResultSize", "0")
    

    0 代表无限

    【讨论】:

    • 即使使用您推荐的设置,我仍然遇到同样的问题。此外,当我在 sql 中使用limit 子句(例如limit 100)时,我成功返回结果,表明结果集的大小是这里的罪魁祸首。另外,如果您碰巧知道任何可以让我获得有关如何优化解释计划的信息的来源,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    相关资源
    最近更新 更多