【问题标题】:Merge Hive tables using RJDBC package使用 RJDBC 包合并 Hive 表
【发布时间】:2017-09-20 23:05:54
【问题描述】:

我正在使用 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 中完成它。

【问题讨论】:

    标签: r rjdbc


    【解决方案1】:

    您应该将数据库名称附加到表名称以访问它。我认为 rjdbc 具有“默认”数据库作为默认值。

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

    此外,您应该使用 hive 查询来合并或连接两个表,而不是在 R 中获取数据框后合并它们,因为数据源(此处为 hive)通常比连接/合并函数更智能R 作为数据源,更多地了解数据的布局方式。

    【讨论】:

    • 它仍然发出相同的“找不到表”错误吗?您是否包含了 jdbc 连接所需的所有 jar?
    • dbGetQuery(conn, "select * from default.m_11") Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", : Unable to retrieve JDBC result set for select * from default.metric_561(编译语句时出错:FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'm_11')
    • dbExistsTable(conn, "m_11") [1] TRUE
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多