我正在尝试使用 RJDBC 连接到 Hive2,但它失败并显示"GSS 启动失败"。但是,使用直线客户端可以正常工作。知道在具有相同凭据的同一节点上运行时可能导致不同行为的原因吗?
drv <- RJDBC::JDBC("org.apache.hive.jdbc.HiveDriver", cp, "'")
以下内容仅用于说明目的,因为我想显示我用作 JDBC url 的所有参数。
conn <- RJDBC::d bConnect(drv, "jdbc:hive2://node1:10000/default;principal=hive/hive_node@REALM;ssl=true;sslTrustStore=store_path;trustStorePassword=store_password", "user", "password")
log4j:WARN 找不到 logger (org.apache.hive.jdbc.Utils) 的追加器。log4j:警告 请正确初始化 log4j 系统。log4j:警告 有关详细信息,请参阅 http://logging.apache.org/log4j/1.2/faq.html#noconfig。.jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1], 中的错误:java.sql.SQLException:无法使用 JDBC Uri 打开客户端传输:jdbc:hive2://:10000/default;principal=hive/hive_node@REALM;ssl=true;sslTrustStore=store_path;trustStorePassword=store_password:GSS 启动失败
对你来说有点晚了,但是...查看那篇关于为 Hive/Impala JDBC 配置 Kerberos 身份验证的详细信息的文章(另请注意,"用户"和"密码"连接参数被 Kerberos 身份验证忽略)
这篇文章假设您将密码存储在"keytab"文件中,并使用它来创建私有 Kerberos 票证。如果要改用默认的公共票证,请相应地更改 JAAS conf(即 useTicketCache=true useKeyTab=false
,没有keyTab
条目)
要将配置从 R 代码传递给 Java,最简单的方法是在启动 RJava 初始化之前设置 JAVA_TOOL_OPTIONS
env 变量
Sys.setenv("JAVA_TOOL_OPTIONS"="-Djava.security.auth.login.config=/Path/To/jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false")
PS:在Windows上,路径看起来像C:/Path/To/jaas.conf
(Java会自动将斜杠转换为反斜杠;由于R字符串解释的方式,这比转义每个反斜杠更容易)
最后说明:如果任何混蛋用"答案不应该依赖链接"来标记这个,因为上述链接指向我在 SO 中的另一个帖子,那么他/她真的是一个混蛋,我很乐意当着他/她的面告诉他/她,大声和异国情调的话。