当前位置: 首页 > 知识库问答 >
问题:

如何使用JDBC API捕获配置单元退出状态或错误代码

辛健
2023-03-14

使用JDBC API在配置单元中执行insert查询。但查询未运行。谁能告诉我哪里出了问题。另外,请告诉我如何在运行查询时捕获hive抛出的错误代码。配置单元版本0.13.0

当我在命令行中运行日志中生成的查询时,它们运行良好。

public static void onSuccess() {
        // Write to log on Success
        LOGGER.info("Job Succeeded, Updating the " + hiveDB + "." + logTable + " with status SUCCESS");
        String insertOnSuccess = "insert into table " + hiveDB + "." + logTable + " select " + currentJobID + "," + "'"
                + startTime + "'" + "," + "'" + stopTime + "'" + "," + runTime + "," + "\'SUCCESS\' from " + hiveDB
                + "." + "dual" + " limit 1; ";
        commonDB.InsertToTable(insertOnSuccess);
        JobMailer.PostMail("IB Load Successfully completed", "Load completed");

    }


public void InsertToTable(String insertquery) {
        try {

            stm = hiveConn.createStatement();
            stm.executeUpdate(insertquery);
        } catch (SQLException e) {
            LOGGER.error("Running the insert query for :" + insertquery);
        } catch (Exception e) {
            LOGGER.error(e.getMessage());
        } finally {
            if (stm != null) {
                try {
                    stm.close();
                } catch (SQLException e) {
                    LOGGER.error(e.getMessage());
                    ;
                }
            }
        }
    }

以下是我的错误日志:

16/02/12 12:31:09错误HiveConnector.CommondButilities:运行插入查询y:insert into table INSTALLBASE.IB_LOG select 25,“2016-02-12 12:26:43.037”,“2016-02-12 12:31:09.057”,22982400,INSTALLBASE.DUAL limit 1“成功”;16/02/12 12:31:09信息HiveConnector.JobMailer:发送带有:ib Load Succe ssfully完成16/02/12 12:31:09信息HiveConnector.MainApp:插入记录到installbase.data_usage_governance_log表16/02/12 12:31:10错误HiveConnector.CommondButilities:运行insert查询y:insert到表installbase.data_usage_governance_log select data_asset_reference,File_Name,Origin_System,Transfer_System,“

共有1个答案

景远航
2023-03-14

很遗憾你被Hive0.13卡住了,因为...

从配置单元0.14.0开始,HiveServer2操作日志可用于Beeline客户端。https://cwiki.apache.org/confluence/display/hive/hiveserver2+clients#hiveserver2clients-hiveserver2logging

一旦日志分派在服务器端被激活,您就可以从Java代码中检索这些日志条目--或者异步地检索,或者在执行结束时以类似...

  private static void DumpHiveMessages (java.sql.Statement stmtGeneric)
  { org.apache.hive.jdbc.HiveStatement stmtExtended ;
    try
    { stmtExtended =(org.apache.hive.jdbc.HiveStatement)stmtGeneric ;
      for (String sLogMessage : stmtExtended.getQueryLog())
      { JustTraceIt("HIVE SAYS>" +sLogMessage) ;    } 
      if (stmtExtended.hasMoreLogs())
      { JustTraceIt("WARNING>(...log stream still open...") ; }
    }
    catch (Exception duh)
    { JustTraceIt("WARNING>Error while accessing Hive log stream");
      JustTraceIt("WARNING>" +MakeSenseOfDirtyHadoopException(duh)) ;
    }
  }

这些东西并没有真正的文档化,但是有HiveStatement的源代码,它显示了几个非JDBC标准的html" target="_blank">方法,比如GetQueryLogHasMoreLogs--还有用于Hive2+的GetYarnatsGuid和用于Hive3+的其他东西。
这里是指向GitHub上的“master”分支的链接,可以切换到您使用的任何版本(可能是旧版本1.2,以兼容Spark)。

 类似资料:
  • 这不是转贴 硒。常见的例外。WebDriverException:消息:未知错误:Chrome无法启动:在Python中使用ChromeDriver和Selenium崩溃 我正在使用Linux,创建新配置文件不是一个选项。我想像selenium gui一样加载现有配置文件(而不是创建新配置文件)。 我能让chrome正常工作,但谷歌chrome不行。Chrome将打开,但会回退 错误。 我正在尝试

  • 我尝试了各种解决方案;使用GitHub作为部署方法,安装NPM包服务,强制清理缓存,重新安装node_modules 错误日志: 2022-01-17T16:20:29.660758 00:00 heroku[web.1]:进程以状态1退出2022-02-01-17:16:20:19.752386 00:00 heroku[web.1]::状态从开始更改为崩溃2022-1-17T15:20:30.

  • 我在knpSnappyBundle上有这个错误,我正在尝试生成一个pdf,然后通过电子邮件发送它。 我的配置如下所示: 然后我的控制器: 完全错误消息: 退出状态代码“127”表示出现了问题:stderr:“sh:1:/usr/local/bin/wkhtmltopdf:未找到”stdout:“命令:/usr/local/bin/wkhtmltopdf--lowquality'/tmp/knp_s

  • 问题内容: 我已经打了一下,与和欢乐,我突然想到我能救输出或在对象退出状态。一个玩具的例子: 给我输出,而 给我退出状态(在这种情况下为1,google不执行ping操作)。如果我既要输出又要退出状态,则必须执行2次系统调用,这似乎有点过头了。如何仅使用一个系统调用就能同时获得两者? 编辑:如果可能的话,我希望两者都在控制台中,而无需通过在调用中使用临时文件并随后将其读入。 问题答案: 从R 2.

  • 问题内容: 用一些错误代码退出程序的惯用方式是什么? 的文档说:“程序立即终止;延迟的函数不运行。”,仅调用。对于不是严重错误的事情,终止程序而不运行延迟函数似乎是极端的。 我是否应该绕过一些表明存在错误的状态,然后在某个我知道可以安全退出并已运行所有延迟函数的位置进行调用? 问题答案: 我在大多数实际软件包中都遵循了这些原则,以便尽快采用该约定并适当终止该约定:

  • 当我尝试使用此命令安装mpi4py时 也尝试过, 我总是会遇到这样的错误: