1

我正在尝试使用 RJDBC 连接到 Hive2,但由于“GSS 启动失败”而失败。但是,使用直线客户端可以正常工作。知道在具有相同凭据的同一节点上运行两者时可能导致不同行为的原因吗?

drv <- RJDBC::JDBC("org.apache.hive.jdbc.HiveDriver", cp, "`")

以下仅用于说明目的,因为我想展示我使用的所有参数作为 JDBC url。

conn <- RJDBC::dbConnect(drv, "jdbc:hive2://node1:10000/default;principal=hive/hive_node@REALM;ssl=true;sslTrustStore=store_path;trustStorePassword=store_password", "user", "password ")

log4j:WARN 找不到记录器 (org.apache.hive.jdbc.Utils) 的附加程序。log4j:WARN 请正确初始化 log4j 系统。log4j:WARN 有关详细信息,请参阅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 启动失败

4

1 回答 1

0

对您来说有点晚了,但是...查看有关为 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 中的另一个帖子,那么他/她真的是个混蛋,我很乐意告诉他/她/她的脸,大声而充满异国情调的话语。

于 2017-03-03T09:41:03.193 回答