RDJDBC :: dbConnect无法连接到HiveServer2(kerberos + sasl)

时间:2016-07-08 05:43:46

标签: r hadoop jdbc kerberos rjdbc

我正在尝试使用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&# 34;,"用户","密码")

log4j:WARN找不到logger(org.apache.hive.jdbc.Utils)的appender。 log4j:WARN请正确初始化log4j系统。 log4j:WARN有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig。 .jcall中的错误(drv @ jdrv,&#34; Ljava / sql / Connection;&#34;,&#34; connect&#34;,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启动失败< / p>

1 个答案:

答案 0 :(得分:0)

对你来说有点晚了,但是......看看that post有关为Hive / Impala JDBC 配置Kerberos身份验证的详细信息(另请注意&#34;用户&#34;和&# 34;密码&#34;连接参数被Kerberos auth忽略

该帖子假设您将密码存储在&#34; keytab&#34;文件,并使用它来创建私有Kerberos票证。如果您想使用默认的公共票证,那么相应地更改JAAS配置(即useTicketCache=true useKeyTab=false和没有keyTab条目

要从R代码将配置传递给Java,最简单的方法是在之前设置JAVA_TOOL_OPTIONS env变量其他任何引导RJava初始化的文件

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 Strings解释\的方式,因此更容易转义每个反斜杠

<小时/> 最后的注意事项:如果任何混蛋使用&#34标记此答案,答案不应该依赖链接&#34; ,因为前面提到的链接指向我的另一个帖子,那么他/她真的是一个混蛋,我很乐意用异国情调的话语告诉他/她他/她的脸。