2015-10-21 21 views
1

我,我们配置所有(显然)正确运行RHive包在R和rhive.connect()错误ClassNotFoundException的

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

检查HIVE_HOME是否有正确的配置,HIVE_HOME库和RHDFS和RJava软件包的修订。

终于解决了。

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