这就是我的所作所为:
第一步,从Cloudera获得最新的一组JDBC驱动程序。
第二步,R代码:
require(RJDBC)
drv <- JDBC(driverClass = "com.cloudera.hive.jdbc41.HS2Driver",
classPath = "C:/Rtools/JDBC_Hive/HiveJDBC41.jar")
# Stored Jars with RTools
for(l in list.files("C:/Rtools/JDBC_Hive", "jar$")){
.jaddClassPath(paste0("C:/Rtools/JDBC_Hive/",l))
}
con <- dbConnect(drv, "jdbc:hive2://host:port/default;AuthMech=3;UID=login;PWD=password")
# Obviously host, port, log, pass has been substituted
返回:
Error in .jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1], :
java.sql.SQLException: [Cloudera][HiveJDBCDriver](500151) Error setting/closing session: Open Session Error.
在网上查找类似的错误并没有产生明显的原因/解决方案。
另外,值得一提的是,使用DBeaver等专用工具连接到db绝对没有问题。
可能的问题:Cloudera JDBC驱动程序集不是开箱即用的。也许需要额外的配置?
首次运行时,除500151例外外,还有:
log4j:WARN No appenders could be found for logger (org.apache.thrift.transport.TSaslTransport).
log4j:WARN Please initialize the log4j system properly.
随后的连接尝试不会出现错误。
更新
显然连接/身份验证工作正常但不知何故驱动程序也会自动传递奇怪的命令&#34; set -v&#34;这应该测试hive是否有能力理解各种SQL命令。这是进程以异常终止的地方。