2017-04-24 38 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