在 spark 中捕获已执行 sql 的异常

Posted

技术标签:

【中文标题】在 spark 中捕获已执行 sql 的异常【英文标题】:Catch exceptions for executed sql in spark 【发布时间】:2019-10-22 22:37:18 【问题描述】:

我有一个动态构建的 SQL,其中包含一些损坏的字符串,例如错误的列名或使用 sm 而不是 sum

当我在这个生成的字符串上执行 sparksession.sql() 时,整个 spark 作业按预期失败,我可以在资源管理器日志中看到所有日志。

有没有办法让我在 try catch 块中捕获这个异常并处理这个异常并按照我的逻辑继续前进。

【问题讨论】:

【参考方案1】:

目前这对我有用,但我认为这不是理想的解决方案。

        try 
            return spark.sql(query);
        catch (Exception e) 
      e.getMessage();

对于所有 sql 语法、错误的列或表名查询,这给我带来了 org.apache.spark.sql.AnalysisException 异常。但是我特别无法捕捉到这个异常。

【讨论】:

以上是关于在 spark 中捕获已执行 sql 的异常的主要内容,如果未能解决你的问题,请参考以下文章

执行动态sql时产生的错误会被异常块捕获吗?

Oracle PL/SQL 在循环中捕获锁定异常并继续

Spark SQL DataFrame - 异常处理

java捕获到异常后,异常后的语句不会被执行

在catch块中捕获异常后,是否可以再次在try块中执行代码?

SQLServer异常捕获