我正在使用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)合并两个表格,即m_11&amp; m_12 by“Consm_ID”
还有其他简单的替代方法可以在R中完成。
答案 0 :(得分:0)
您应该将数据库名称附加到表名以访问它。我认为rjdbc默认使用“默认”db。
dbGetQuery(conn, "select * from dbName.m_11")
此外,你应该使用hive查询来合并或连接两个表,而不是在你获得R中的数据帧后合并它们,因为数据源(这里的hive)将比连接/合并函数更加智能化R作为数据源,可以更多地了解数据的布局。