Я использую RJDBC 0.2-5 для подключения к Hive в Rstudio. Мой сервер имеет hasoop-2.4.1 и hive-0.14. Я следую приведенным ниже указаниям, чтобы подключиться к Hive.подключиться к удаленному серверу Hive от R, используя RJDBC/RHive
library(DBI)
library(rJava)
library(RJDBC)
.jinit(parameters="-DrJava.debug=true")
drv <- JDBC("org.apache.hadoop.hive.jdbc.HiveDriver",
c("/home/packages/hive/New folder3/commons-logging-1.1.3.jar",
"/home/packages/hive/New folder3/hive-jdbc-0.14.0.jar",
"/home/packages/hive/New folder3/hive-metastore-0.14.0.jar",
"/home/packages/hive/New folder3/hive-service-0.14.0.jar",
"/home/packages/hive/New folder3/libfb303-0.9.0.jar",
"/home/packages/hive/New folder3/libthrift-0.9.0.jar",
"/home/packages/hive/New folder3/log4j-1.2.16.jar",
"/home/packages/hive/New folder3/slf4j-api-1.7.5.jar",
"/home/packages/hive/New folder3/slf4j-log4j12-1.7.5.jar",
"/home/packages/hive/New folder3/hive-common-0.14.0.jar",
"/home/packages/hive/New folder3/hadoop-core-0.20.2.jar",
"/home/packages/hive/New folder3/hive-serde-0.14.0.jar",
"/home/packages/hive/New folder3/hadoop-common-2.4.1.jar"),
identifier.quote="`")
conHive <- dbConnect(drv, "jdbc:hive://myserver:10000/default",
"usr",
"pwd")
Но я всегда получаю следующее сообщение об ошибке:
Error in .jcall([email protected], "Ljava/sql/Connection;", "connect", as.character(url)[1], : java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hive.conf.HiveConf$ConfVars
Даже я попытался с другой версией улей банку, улей-standalone.jar-JDBC, но ничего не похоже на работу .. Я также использую RHive, чтобы подключиться к Hive, но также не было успеха.
Может кто-нибудь помочь мне? .. Я вроде застрял :(
Спасибо loicmathieu за ваш ответ .. Я взял все банки из каталога lib Hive & hadoop, которые установлены на моем сервере. Также здесь две вещи разные, одна из них - это попытка подключения к удаленному серверу, а не к локальному. во-вторых, Hive2 не настроен на моем сервере, и мне пришлось использовать куст в параметре Conn («jdbc: hive: // myserver: 10000/....) Можете ли вы предложить еще? – user2538041
Привет, я также подключаюсь к удаленному Hive (я использую localhost как пример), но через сервер Hive2. Вы можете попробовать так же, как я, но с помощью драйвера org.apache.hadoop.hive.jdbc.HiveDriver и используемого вами jdbc URl. Основная часть здесь - определить правильный путь к классу и вызов .jinit с ним (в вашем примере вы не используете тот же код инициализации, что и я). Поэтому я предлагаю вам использовать тот же способ для init rJava, что в моем примере (определение cp then callin .jinit ()), Я просто добавляю один за другим все необходимые банки, у меня больше нет NoClassDefFoundError ... – loicmathieu
Я также придерживаюсь того же, что вы упомянули, но снова застрял с той же ошибкой. Однако, когда я проверил Hive-common-0.14. jar, файл класса HiveConf присутствует с соответствующим пакетом. Не знаю, почему JVM не рассматривает это. Даже я проверил моя версия JVM с версией JVM, на которой создан этот файл jar. Шахта новее, чем JVM Jar так что не должно быть какой-либо вопрос :( – user2538041