rdjdbc::dbconnect无法连接到hiveserver2(kerberos+sasl)

sycxhyv7  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(342)

我试图连接到hive2使用rjdbc,但它失败与“gss启动失败”。不过,使用beeline客户端同样可以正常工作。知道在同一个节点上使用相同的凭据运行这两个应用程序时,是什么导致了不同的行为吗?
drv<-rjdbc::jdbc(“org.apache.hive.jdbc.hivedriver”,cp,“`”)

下面只是为了说明,因为我想显示我使用的所有参数作为jdbc url。

连接<-rjdbc::dbconnect(drv)jdbc:hive2://node1:10000/默认值;主体=Hive/hive_node@realm;ssl=真;ssltruststore=存储路径;truststorepassword=store\u password“,”user“,”password“)

log4j:warn找不到logger的appender(org.apache.hive.jdbc.utils)。log4j:warn请正确初始化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/默认值;主体=Hive/hive_node@realm;ssl=真;ssltruststore=存储路径;truststorepassword=存储\密码:gss初始化失败

abithluo

abithluo1#

对你来说有点晚了,但是。。。请看那篇关于为hive/impala jdbc配置kerberos身份验证的文章(还请注意kerberos auth忽略了“user”和“password”连接参数)
文章假设您拥有存储在“keytab”文件中的密码,并使用它创建私有kerberos票证。如果您想使用默认的public ticket,那么相应地更改jaas conf(即。 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字符串的解释方式,所以转义每个反斜杠更容易 \ )
最后一点:如果任何混蛋把这个贴上“答案不应该依赖链接”的标签,因为前面提到的链接指向了我在s.o.的另一个帖子,那么他/她真的是个混蛋,我会很高兴地当面告诉他/她,大声地用异国话。

相关问题