Я следовал нескольким учебникам, чтобы попытаться подключиться к Hive с помощью RJDB C, без успеха.
Вот что у меня есть:
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"
Я также пробовал самые последние версии, но всегда синхронизировал c с той же версией Cloudera. Даже если моя версия 5.XX.
Я вполне уверен, что HOSTNAME
правильный, так как я заставил его работать с impyla
в Python с тем же именем хоста / портом.
Ошибка:
Ошибка в .jcall (drv@jdrv, "Ljava / sql / Connection;", "connect", as.character (url) [1],: java .lang.NoClassDefFoundError: org / apache / thrift / TException
Насколько я понимаю, у меня нет правильных .jar
s?
Замечание:
Я не могу установить hive-jdb c на машину, поскольку я не root. Могу ли я обойтись без него, поскольку я поместил hive-jdbc-1.1.0-cdh5.16.99.jar
в папку?
Также Может ли Kerberos вызвать эту ошибку?