如何获取hive jdbc连接的应用程序Id?

如何获取hive jdbc连接的应用程序Id?,jdbc,hive,yarn,Jdbc,Hive,Yarn,下面是我如何通过HiveJDBC运行查询 Class.forName(DRIVER); Connection = DriverManager.getConnection(CONNECTION_URL, USERNAME, PASSWORD); Response = Connection.createStatement(); ResultSet = Response.executeQuery(query); 我可以在ui中看到应用程序的详细信息。但是现在我想通过java代码获取此作业的应用程序i

下面是我如何通过HiveJDBC运行查询

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

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

AFAIK简单的回答是:不在旧版本的蜂巢中;可能是最新版本,它允许您检索一些日志,其中可能包含纱线ID

从Hive 0.14开始,您可以将HiveServer2设置为发布当前语句的执行日志;在客户机代码中,您可以使用特定于配置单元的API来获取这些日志(与Beeline客户机一样异步,或者在执行结束时只获取一次)

引用

从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)
配置单元.server2.logging.operation.level(配置单元1.2以后)

Hive 2.0将日志记录
queryId
sessionId
的支持添加到HiveServer2日志文件(…)

HiveStatement
的源代码显示了几种非JDBC方法,例如
getQueryLog
hasMoreLogs
——还有用于Hive 2+的
getYarnATSGuid
,以及用于Hive 3+的其他方法。
以下是切换到您正在使用的任何版本(可能是与Spark兼容的旧1.2)


有关如何使用“Logs”方法的虚拟演示,请看。

那些指向Hive JDBC API和“ThePost”的链接现在已经过时。这些链接已经被完全替换。