gpt4 book ai didi

java - Java-GSS启动失败异常,由以下原因引起:org.apache.thrift.transport.TTransportException:GSS启动失败

转载 作者:行者123 更新时间:2023-12-02 20:42:12 31 4
gpt4 key购买 nike

我正在尝试从Hive表中检索记录。为此,我用Java编写了以下连接。

public static Connection getHiveConnection() throws IOException, SQLException {
System.out.println("Preparing Hive connection1");
Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "Kerberos");

System.setProperty("java.security.krb5.kdc", "ip-x-x-x-x.bc9.internal");
System.setProperty("java.security.krb5.realm", "ABCDEV.COM");
UserGroupInformation.loginUserFromKeytab("username@ABCDEV.COM", "/home/username/username.keytab");
// UserGroupInformation.setConfiguration(conf);
System.out.println("Kerberos Connected");
// Hive Connection
try {
Class.forName("org.apache.hive.jdbc.HiveDriver");
if((hiveConnection == null) || hiveConnection.isClosed()) {
hiveConnection = DriverManager.getConnection("jdbc:hive2://x.x.x.x.x:10500/schema;principal=hive/_HOST@ABCDEV.COM", "user", "pwd");
return hiveConnection;
} else {
return hiveConnection;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}

当我尝试使用此类中的连接时,在如下所示的其他类中:
Connection hiveCon = (Connection) DbManager.getHiveConnection();
PreparedStatement hive_pstmnt = hiveCon.prepareStatement(hiveCountQuery);
ResultSet hiveRs = hive_pstmnt.executeQuery();

我得到了异常(exception):
Preparing Hive connection1
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Kerberos Connected
java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://x.x.x.x.x:10500/schema;principal=hive/_HOST@ABCDEV.COM: GSS initiate failed
Caused by: org.apache.thrift.transport.TTransportException: GSS initiate failed

在代码中,我注释了以下行:UserGroupInformation.setConfiguration(conf);如果删除注释并执行代码,则会得到另一个异常:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.IllegalArgumentException: Invalid attribute value for hadoop.security.authentication of Kerberos
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:200)
at org.apache.hadoop.security.UserGroupInformation.setConfiguration(UserGroupInformation.java:227)
at com.dbconnections.gphive.DbManager.getHiveConnection(DbManager.java:24)

我已经完成了kinit并生成了票证,只是为了确保票证具有有效的时间段。
任何人都可以让我知道我在这里做的错误是什么,以便可以更正代码。

最佳答案

这是kerberos的问题。票证不是在堡垒中生成的。创建完后, jar 便成功运行了。

关于java - Java-GSS启动失败异常,由以下原因引起:org.apache.thrift.transport.TTransportException:GSS启动失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49386237/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com