2016-05-18 26 views
1

RJDBC连接到Hive并且还读取Hive中的数据。但它不是使用 - > dbWriteTable将数据写入Hive。R使用RJDBC不向Hive表写入数据

看到如下─

options(java.parameters = "-Xmx8g") 
library(DBI) 
library(rJava) 
library(RJDBC) 

cp <- c(list.files("/tmp/R_hive_libs/cloudera_hive_jars", pattern = "[.]jar", full.names=TRUE, recursive=TRUE),list.files("/tmp/R_hive_libs/R_hadoop_libs", pattern = "[.]jar", full.names=TRUE, recursive=TRUE),list.files("/tmp/R_hive_libs/R_hadoop_libs/lib", pattern = "[.]jar", full.names=TRUE, recursive=TRUE), recursive=TRUE) 

drv <- JDBC(driverClass = "com.cloudera.hive.jdbc4.HS2Driver", classPath=cp) 
conn <- dbConnect(drv, "jdbc:hive2://XXXXXX:10000/default", "user", "password") 
show_databases <- dbGetQuery(conn, "show databases") 
List_of_Tables <- dbListTables(conn) 

data1 <- dbGetQuery(conn, "select * from XXX.xxx limit 10000") 
data_to_write_back_to_hive <- data.frame(aggregate(data1$xxx.xxx, by=list(Month=data1$xxx.cmp_created_timestamp_month), FUN=sum)) 
data_to_write_back_to_hive[[2]] <-c(10,20) 
colnames(data_to_write_back_to_hive) <- c("Month", "Energy") 
dbWriteTable(conn, "xxxx.checking",data_to_write_back_to_hive) 

如何将数据写回到蜂巢?它给下面的无差错

错误。本地(康涅狄格州,声明,...):执行JDBC更新查询在dbSendUpdate失败([辛巴] HiveJDBCDriver ERROR 处理查询/语句错误代码:40000 ,SQL状态: TStatus(的StatusCode:ERROR_STATUS, infoMessages:[* org.apache.hive.service.cli.HiveSQLException:错误 在编译声明:失败:ParseException的线1时36分不匹配 输入 '精确' 期待)附近创建表中的'DOUBLE' 声明:28:27, org.apache.hive.service.cli.operation.Operation:toSQLException:Operation.java:326, org.apache.hive.service.cli.operation.SQLOperation:prepare:SQLOperation.java:102, org.apache.hive.service.cli.operation.SQLOperation:runInternal:SQLOperation.java:171, org.apache .hive.service.cli.operation.Operation:run:Operation.java:268, org.apache.hive.service.cli.session.HiveSessionImpl:executeStatementInternal:HiveSessionImpl.java:410, org.apache.hive.service .cli.session.HiveSessionImpl:executeStatement:HiveSessionImpl.java:391, sun.reflect.GeneratedMethodAccessor56:调用:: - 1, sun.reflect.DelegatingMeth

+0

你可以在这里找到一些解决办法吗? PRIVISION关键词不支持版本低于蜂巢2.0 – venkat

回答

0

这个问题来了a fair bit。我认为最简单的答案是你目前无法做到你想做的事。 DBI/JDBC驱动程序不会在语法上修改HiveQL的元编程语言。

+0

即时猜测这是由于蜂巢版本? hive 2.0+可能适用于此 – venkat

+0

自从我发布以来,可能的HIVE和EMR已经有了很多更新。也许有人会更新 – russellpierce