R使用RJDBC将表写入配置单元

R使用RJDBC将表写入配置单元,r,jdbc,hive,R,Jdbc,Hive,我已使用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.j

我已使用
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 ")
错误返回:

.jcall(md,“Ljava/sql/ResultSet;”、“getTables”、.jnull(“java/lang/String”)中的
错误:
带有签名的方法getTables(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/sql/ResultSet;未找到


需要我的误用或其他方法吗?

我有一个部分答案。您对dbWriteTable的参数是相反的。模式是dbWriteTable(连接、表名、数据),文档读取的是dbWriteTable(连接、名称、值……)。尽管如此,我发现“正确”表单也不起作用,而是产生以下错误消息:

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)).)

(至少在为Hive使用Amazon的JDBC驱动程序时).这个错误至少看起来是显而易见的,为使表插入数据而生成的查询在HiveQL中没有正确解析。除了手动进行修复外,我不确定该修复是否正确。

这些年来,我仍然找不到完整的解决方案…但这里还有一个部分解决方案,仅适用于写入小数据。frame和多小的v从32/64位开始,mac/win

首先将数据帧更改为字符向量

data2hodoop
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)).)