2014-10-09 46 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。