我遵循了多个教程尝试使用 RJDBC 连接到 Hive,但没有成功。
这是我所拥有的:
library(DBI)
library(rJava)
library(RJDBC)
driver <- JDBC('org.apache.hive.jdbc.HiveDriver',
classPath = list.files("/home/cdsw/R",pattern="jar$",full.names=T),
identifier.quote="`")
USERNAME <- "MyUser"
PASSWORD <- "MySecretPassWord"
HOSTNAME <- "my.host.net"
PORT <- 10000
server <- sprintf('jdbc:hive2://%s:%s', HOSTNAME, PORT)
conn <- dbConnect(driver, server,
USERNAME, PASSWORD)
我已经下载并放置在"/home/cdsw/R/"
jar
文件。
list.files("/home/cdsw/R",pattern="jar$",full.names=T)
[1] "/home/cdsw/R/hadoop-common-2.6.0-cdh5.16.99.jar"
[2] "/home/cdsw/R/hive-jdbc-1.1.0-cdh5.16.99.jar"
我也尝试了最新版本,但始终与相同的Cloudera版本同步。即使我的版本是 5.XX。
我很确定HOSTNAME
是正确的,因为我已经让它在 Python 中使用相同的主机名/端口与impyla
一起使用。
错误:
.jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url([1], 中的错误: java.lang.NoClassDefFoundError: org/apache/thrift/TException
据我了解,我没有正确的.jar
?
备注:
我无法在机器上安装 hive-jdbc,因为我不是 root。我可以没有它吗,因为我已经放置了hive-jdbc-1.1.0-cdh5.16.99.jar
文件夹中?
另外,Kerberos 会触发此错误吗?
我需要下载独立版本的 hive 驱动程序。
hive-jdbc-3.1.2-standalone.jar
,独立版本不需要完全安装Hive客户端。