2017-04-24 47 views
0

我正在使用RJDBC包連接到Hive。使用RJDBC包合併Hive表

library(rJava) 
library(RJDBC) 
- 
- 
- 
conn <- dbConnect(drv, "jdbc:hive2://ip:port","***", "****") 

得到連接我鍵入此命令,查看錶的列表後:

dbListTables(conn) 

[1] "m_11"      "m_12"      
[3] "m_16"      "m_18"      
[5] "m_19"      "m_20"  

其他命令即

dbGetTables (conn, "m_11") 
TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS 
1    report m_11  TABLE <NA> 

但是,當我想讀表就顯示錯誤的「表未找到「:

dbGetQuery(conn, "select * from m_11") 
Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", : 
    Unable to retrieve JDBC result set for select * from m_11 (Error while compiling statement: FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'm_11') 

此外,

d <- dbReadTable(conn, "m_11") 
Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", : 
    Unable to retrieve JDBC result set for SELECT * FROM "m_11" (Error while compiling statement: FAILED: ParseException line 1:14 cannot recognize input near '"m_11"' '<EOF>' '<EOF>' in join source) 

我想知道下面的命令:

a)如何讀表即m_11
b)在 「Consm_ID」 合併兩個表即m_11 & m_12

有任何其他簡單的替代方法在R中完成它。

回答

0

您應該將數據庫名追加到表名以訪問它。我認爲rjdbc有默認的「默認」分貝。

dbGetQuery(conn, "select * from dbName.m_11") 

此外,你應該使用蜂巢querys合併或連接兩個表,而不是把它們合併你在R上的數據幀後,作爲數據源(這裏蜂巢)將主要不是加入更聰明/將R中的函數合併爲數據源,以作爲關於如何佈置數據的更多知識。

+0

我試過了,但仍然不能正常工作 – ROY

+0

它仍然發出相同的「表未找到」錯誤?你是否包含jdbc連接所需的所有jar包? – venkat

+0

dbGetQuery(conn,「select * from default.m_11」) .verify.JDBC.result中的錯誤(r,「無法檢索JDBC結果集」,: 無法檢索select * from JDBC的JDBC結果集。 metric_561(編譯語句時出錯:FAILED:SemanticException [錯誤10001]:行1:14表未找到'm_11') – ROY