2014-10-09 65 views
1

我试图在RStudio(在我的机器上)和Hive(它在不同的服务器上设置)之间建立连接。这里是我的R代码里面:R和Hive之间的连接

install.packages("RJDBC",dep=TRUE) 
require(RJDBC) 

drv <- JDBC(driverClass = "org.apache.hive.jdbc.HiveDriver", 
     classPath = list.files("C:/Users/37/Downloads/hive-jdbc-0.10.0.jar", 
     pattern="jar$",full.names=T), 
     identifier.quote="'") 

下面是在执行上面的命令我得到的错误:

Error in .jfindClass(as.character(driverClass) 1) : class not found conn <- dbConnect(drv, "jdbc:hive2://65.11.23.453:10000/default", "admin", "admin")

我从here下载的jar文件并将它们放置在CLASSPATH。请告诉我是否做错了什么,以及如何让这个工作成功。

谢谢。

回答

0

我尝试这个示例代码和它的工作对我来说:发生在我身上

library(RJDBC) 

#Load Hive JDBC driver 
hivedrv <- JDBC("org.apache.hadoop.hive.jdbc.HiveDriver", 
       c(list.files("/home/amar/hadoop/hadoop",pattern="jar$",full.names=T), 
        list.files("/home/amar/hadoop/hive/lib",pattern="jar$",full.names=T))) 

#Connect to Hive service 
hivecon <- dbConnect(hivedrv, "jdbc:hive://ip:port/default") 
query = "select * from mytable LIMIT 10" 
hres <- dbGetQuery(hivecon, query) 
+1

请让我知道我到底能在哪里获得配置单元连接所需的所有jar文件? – Mothi 2014-10-09 11:29:03

+0

现在第一条语句正常工作,但在db连接语句> conn < - dbConnect(drv,“jdbc:hive://54.77.162.203:10000/default”)中收到错误 .jcall(drv @ jdrv,“Ljava/sql/Connection;“,”connect“,as.character(url)[1],: java.lang。NoClassDefFoundError:org/apache/hadoop/hive/metastore/api/MetaException – Mothi 2014-10-09 11:31:04

+0

hive安装在不同的服务器上,我没有在我的机器上安装它。我在我的机器上安装了R,并试图连接到托管在另一台服务器上的配置单元。 – Mothi 2014-10-09 11:33:42

0

同样的错误年初的时候,我试图用RJDBC连接到Cassandra的,它是通过将卡桑德拉JDBC依赖于解决你的JAVA ClassPath。

看到这个answer

0

对于任何人谁发现这个帖子有一对夫妇的事情,你可以尝试解决问题:

1)从源install.packages("rJava","http://rforge.net/",type="source")

2.重装rJava)启动Java调试器进行加载并尝试再次连接 .jclassLoader()$setDebug(1L)

3.)我不得不使用两个Sys.setenv(JAVA_HOME = /Path/to/java) befo重新利用dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/server/libjvm.dylib')找到正确的jvm库。

4)如前所述rJava load error in RStudio/R after "upgrading" to OSX Yosemite,你还可以创建之间的链接libjvm.dylib/usr/local/lib

sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

如果所有这些失败,一个卸载和安装R已经在也为我工作过去。

0

迄今为止,这对我有帮助。

1)首先检查配置单元服务是否正在运行,如果没有重新启动它。

sudo service hive-server2 status 
sudo service hive-server2 restart 

2)安装rJava和RJDBCin R.

library(rJava) 
library(RJDBC) 

options(java.parameters = '-Xmx8g') 
hadoop_jar_dirs <- c('/usr/lib/hadoop/lib', 
        '/usr/lib/hadoop', 
        '/usr/lib/hive/lib') 
clpath <- c() 
for (d in hadoop_jar_dirs) { 
    clpath <- c(clpath, list.files(d, pattern = 'jar', full.names = TRUE)) 
} 
.jinit(classpath = clpath) 
.jaddClassPath(clpath) 

hive_jdbc_jar <- '/usr/lib/hive/lib/hive-jdbc-2.1.1.jar' 
hive_driver <- 'org.apache.hive.jdbc.HiveDriver' 
hive_url <- 'jdbc:hive2://localhost:10000/default' 
drv <- JDBC(hive_driver, hive_jdbc_jar) 
conn <- dbConnect(drv, hive_url) 
show_databases <- dbGetQuery(conn, "show databases") 

show_databases 

确保给予正确的路径hadoop_jar_dirs,hive_jdbc_jar和hive_driver。