gpt4 book ai didi

R使用RJDBC写表到Hive

转载 作者:行者123 更新时间:2023-12-04 11:32:08 24 4
gpt4 key购买 nike

我已经使用 rjdbc 成功连接了本地 R3.1.2(win7 64 位 rstudio)和远程配置单元服务器,

library(RJDBC)
.jinit()
dir = "E:/xxx/jars/hive/"
for(l in list.files(dir)) {
.jaddClassPath(paste( dir ,l,sep="")) }
options( java.parameters = "-Xmx8g" )
drv <- JDBC("org.apache.hadoop.hive.jdbc.HiveDriver",
"E:/xxx/jars/hive/hive-jdbc-0.11.0.jar")

conn <- dbConnect(drv, "jdbc:hive://10.127.130.162:10002/default", "", "" )
dbGetQuery(conn, "select * from test.test limit 10 ")

成功从 hive 读取数据,但我无法使用写入 R 数据帧 dbWriteTable :
data(iris)
dbWriteTable(conn, iris , "test.dc_test")

错误返回:
Error in .jcall(md, "Ljava/sql/ResultSet;", "getTables", .jnull("java/lang/String"), :
method getTables with signature (Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/sql/ResultSet; not found

是我的误用还是需要其他方法?

最佳答案

我有一个部分的答案。您对 dbWriteTable 的参数被颠倒了。模式是 dbWriteTable(connection, tableName, data),文档读取 dbWriteTable(conn, name, value, ...) .话虽如此,我也没有发现“正确”的形式有效,而是产生以下错误消息:

Error in .local(conn, statement, ...) : 
execute JDBC update query failed in dbSendUpdate ([Simba][HiveJDBCDriver](500051) ERROR processing query/statement. Error Code: 40000, SQL state: TStatus(statusCode:ERROR_STATUS, sqlState:42000, errorCode:40000, errorMessage:Error while compiling statement: FAILED: ParseException line 1:41 mismatched input 'PRECISION' expecting ) near 'DOUBLE' in create table statement), Query: CREATE TABLE iris (`Sepal.Length` DOUBLE PRECISION,`Sepal.Width` DOUBLE PRECISION,`Petal.Length` DOUBLE PRECISION,`Petal.Width` DOUBLE PRECISION,Species VARCHAR(255)).)

(至少在将 Amazon 的 JDBC 驱动程序用于 Hive 时)。该错误至少看起来不言自明,为使数据插入表生成的查询未在 HiveQL 中正确解析。修复,除了手动进行之外,我不确定。

关于R使用RJDBC写表到Hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28211999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com