【问题标题】:How to get Yarn Application Id for hive jdbc connection?如何获取 hive jdbc 连接的 Yarn 应用程序 ID?
【发布时间】:2019-07-22 05:41:45
【问题描述】:

这是我通过 hive jdbc 运行查询的方式

Class.forName(DRIVER);
Connection = DriverManager.getConnection(CONNECTION_URL, USERNAME, PASSWORD);
Response = Connection.createStatement();
ResultSet = Response.executeQuery(query);

我可以在yarn ui中看到应用程序的详细信息。但是现在我想通过java代码获取这项工作的应用程序ID,可以这样做吗?如果是,那么如何?

【问题讨论】:

    标签: jdbc hive hadoop-yarn


    【解决方案1】:

    AFAIK 简短的回答是:不在旧版本的 Hive 中;可能是最新版本,它可以让您检索一些可能包含 YARN ID 的日志。

    从 Hive 0.14 开始,您可以设置 HiveServer2发布当前语句的执行日志;并且在您的客户端代码中,您可以使用 Hive 特定的 API 来获取这些日志(就像 Beeline 客户端一样异步,或者在执行结束时只进行一次)。

    引用Hive documentation

    从 Hive 0.14.0 开始,提供 HiveServer2 操作日志 直线客户。这些参数配置日志记录:

    hive.server2.logging.operation.enabled
    hive.server2.logging.operation.log.location
    hive.server2.logging.operation.verbose (Hive 0.14 到 1.1)
    hive.server2.logging.operation.level (Hive 1.2 以后)

    Hive 2.0 增加了对 HiveServer2 日志文件记录 queryIdsessionId 的支持(...)

    HiveStatement 的源代码显示了几个非 JDBC 方法,例如 getQueryLoghasMoreLogs——还有用于 Hive 2+ 的 getYarnATSGuid 以及用于 Hive 3+ 的其他内容。
    这是link to the "master" branch on GitHub,切换到您使用的任何版本(可能是旧的 1.2 以与 Spark 兼容)

    有关如何点击“日志”方法的虚拟演示,请查看that SO post with a snippet

    【讨论】:

    • 那些指向 Hive JDBC API 和“那个帖子”的链接现在已经过时了。
    • 那些链接已被完全替换。
    猜你喜欢
    • 2012-11-04
    • 2016-09-21
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多