使用 Rstudio windows 中的 R rJDBC 包连接到 hive(启用了 kerbero)
Posted
技术标签:
【中文标题】使用 Rstudio windows 中的 R rJDBC 包连接到 hive(启用了 kerbero)【英文标题】:Connecting to hive (kerberoes enabled) with R rJDBC package from Rstudio windows 【发布时间】:2016-04-01 16:53:59 【问题描述】:尝试使用 R rjdbc 连接 Hive 2(启用 kerberoes 验证)时出现以下问题。使用simba驱动连接hive。
hiveConnection
.jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1], 中的错误: java.sql.SQLException: [Simba]HiveJDBCDriver Invalid operation: Unable to get Principal Name for authentication ;
【问题讨论】:
您可能会看到以下异常有时与类路径上的 slf4j jar 问题有关。 Java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple; . 您是否在默认票证缓存中创建了 Kerberos TGT?因为从 R 中很难配置 Java 安全库 (JAAS) 来设置主体(即 Kerberos 登录)、获取密码的方式等。 在默认位置(例如 Linux 上的/etc/krb5.conf
)是否有有效的 Kerberos 配置文件,其中包含域的 KDC 服务器位置等?
顺便说一句,Kerberos 领域通常是大写的。即使它映射到用小写写成的 Windows 域。
旁注:血腥的 SLF4J 消息与安全错误无关。
【参考方案1】:
-
确保发出 kinit 并使用 klist 生成 kerberoes 票证
类路径上可用的给定 R 版本(32/64 位)的正确 Java 版本
根据您的 java 版本提供正确的 slf4j jar
假设您的代码没有逻辑问题,所有这些步骤都应该可以解决问题。
【讨论】:
以上是关于使用 Rstudio windows 中的 R rJDBC 包连接到 hive(启用了 kerbero)的主要内容,如果未能解决你的问题,请参考以下文章
为 Windows 32 位安装哪个 R 和 RStudio 版本? [关闭]