我尝试使用以下连接字符串通过 JDBC 连接到 Hive:
Class.forName("org.apache.hive.jdbc.HiveDriver")
hiveConString = "jdbc:hive2://localhost:10000/default;principal=hive/_HOST@HADOOP.LOCALDOMAIN"
Run Code Online (Sandbox Code Playgroud)
虽然我遇到以下错误:
Exception in thread "main" java.sql.SQLException: Could not open client transport with JDBC Uri:jdbc:hive2://localhost:10000/default;principal=hive/_HOST@HADOOP.LOCALDOMAIN:GSS initiate failed
Run Code Online (Sandbox Code Playgroud)
我已经检查了 hive-site.xml 以确保遵循 kerbersoe 身份验证。XML 文件包括:
<property>
<name>hive.server2.authentication.kerberos.principal</name>
<value>hive/_HOST@HADOOP.LOCALDOMAIN</value>
</property>
Run Code Online (Sandbox Code Playgroud)
我还确保包含所有必需的 Maven 存储库。
另外,我正在使用 Eclipse 在 VM 上运行代码。
小智 6
如果使用具有 kerberos 身份验证的 VM 并且您的身份验证尚未过期,则在运行 java 代码时需要指定以下 VM 参数:
-Djava.security.krb5.debug=true
-Djava.security.krb5.conf="/etc/krb5.conf"
-Djavax.security.auth.useSubjectCredsOnly=false
Run Code Online (Sandbox Code Playgroud)