Rive中的RHive包和rhive.connect()错误ClassNotFoundException

时间:2015-10-21 08:45:51

标签: r hive cloudera-cdh rstudio-server

我,我们配置所有(显然)正确,我们在运行时收到下一个错误

Sys.setenv(HADOOP_CMD="/opt/cloudera/parcels/CDH-5.4.5-1.cdh5.4.5.p0.7/bin/hadoop")
Sys.setenv(RHIVE_HIVESERVER_VERSION="2");
library("rJava", lib.loc="/usr/lib64/R/library")
library("RJDBC", lib.loc="/usr/lib64/R/library")
library("rhdfs", lib.loc="/usr/lib64/R/library")
hdfs.init()
library("Rserve", lib.loc="~/R/x86_64-redhat-linux-gnu-library/3.2")
library("RHive", lib.loc="~/R/x86_64-redhat-linux-gnu-library/3.2")
rhive.init()

rhive.connect(host="oururl",port="ourport", defaultFS="hdfs://ourhdfsservice", hiveServer2=TRUE ,updateJar=FALSE)

(我想说HIVE_HOMEHADOOP_HOME已正确定义)

我们收到的错误:

Exception in thread "Thread-12" java.lang.RuntimeException: java.sql.SQLException: java.lang.ClassNotFoundException
    at com.nexr.rhive.hive.HiveJdbcClient$HiveJdbcConnector.connect(HiveJdbcClient.java:337)
    at com.nexr.rhive.hive.HiveJdbcClient$HiveJdbcConnector.run(HiveJdbcClient.java:322)
Caused by: java.sql.SQLException: java.lang.ClassNotFoundException
    at com.nexr.rhive.hive.DatabaseConnection.connect(DatabaseConnection.java:41)
    at com.nexr.rhive.hive.HiveJdbcClient$HiveJdbcConnector.connect(HiveJdbcClient.java:330)
    ... 1 more
Caused by: java.lang.ClassNotFoundException
    at RJavaClassLoader.findClass(RJavaClassLoader.java:383)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:191)
    at com.nexr.rhive.hive.DatabaseConnection.connect(DatabaseConnection.java:38)
    ... 2 more
Error: java.lang.IllegalStateException: Not connected to hiveserver

这里发生了什么?我们尝试重新安装Hive但错误相同。

1 个答案:

答案 0 :(得分:1)

HIVE_HOME的详细检查,看看是否有正确的配置,HIVE_HOME libs以及RHDFS和RJava包的修订版。

终于解决了。

我们需要对这个包有很多关心,因为java依赖很难。