r - 将 R 数据帧写入 Hadoop Hive

标签 r hadoop rodbc rhadoop

我想将 R 中的数据框写入 Hadoop Hive 中的新表。我在 RODBC 包中使用 sqlSave() ,如下所示。表结构是在 Hadoop 中创建的,但在向表中插入任何数据之前出现错误。下面包含错误消息。关于如何将 R 中的数据框写入 Hadoop 中的新表有什么建议吗?

代码

column_1 = c("a","b","c")

column_2 = c("d","e","f")

column_3 = c("g","h","i")

test.df = data.frame(column_1,column_2,column_3)

columnTypes <- list(column_1='varchar(255)',
                    column_2='varchar(255)',
                    column_3='varchar(255)')

sqlSave(dbConn, test.df, 'db.tablename', verbose=T, append=T, rownames = F, fast = F, varTypes = columnTypes)

错误信息

Query: CREATE TABLE db.tablename  ("column_1" varchar(255), "column_2" varchar(255), "column_3" varchar(255))
Query: INSERT INTO db.tablename ( "column_1", "column_2", "column_3" ) VALUES ( 'a', 'd', 'g' )
Error in sqlSave(dbConn, test.df, "db.tablename", verbose = T,  : 
[Microsoft][HiveODBC] (55) Insert operation is not support for table: HIVE.db.tablename
[RODBC] ERROR: Could not SQLExecDirect 'INSERT INTO db.tablename ( "column_1", "column_2", "column_3" ) VALUES ( 'a', 'd', 'g' )'

最佳答案

像这样设置你的连接:

library(odbc)
con <- DBI::dbConnect(odbc::odbc(),
                  Driver    ="HIVE",
                  Host      = "myhadoopurl.com",
                  Port      = "8443",
                  Schema    = "my_schema_db_name",            
                  HttpPath  = "gateway/default/hive",   
                  AuthMech  = "3",
                  HiveServerType  = "2",
                  ThriftTransport = "2",
                  UID = my_user_name,
                  PWD = my_pw)

#Got an error here, that Hive doesn't like the iris . in the column names so...
names(iris)<-gsub("\\.","_",names(iris))

DBI::dbWriteTable(con, "my_schema_db_name.iris", iris) 

我在这方面遇到了一些权限被拒绝的错误,这些错误具有误导性。在连接设置和 dbWriteTable 函数上修改模式名称后,它起作用了。追加:

DBI::dbWriteTable(con, "my_schema_db_name.iris", iris, append=TRUE)

它不起作用,如果我将连接架构留空并使用 Hive 的默认架构进行连接,这就是我遇到权限错误的地方。

关于r - 将 R 数据帧写入 Hadoop Hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42559958/

相关文章:

r - 在 Ubuntu 上安装 "rgl"时遇到问题

r - 有没有办法为 ggsave 设置新的默认值?

r - 具有成对距离矩阵输出的 colnames 和 rownames

sorting - 使用随机字段而不只是前k个字段进行排序和分区

hadoop - Apache Falcon : Setting up a data pipeline in an actual cluster [Falied to load Data, 错误:400 错误请求]

sql-server - RODBC 错误 : 'Calloc' could not allocate memory

r - 如何获得 R 帮助?

java - 在 Windows-7 64 位上运行 hadoop

PostgreSQL 的 rodbc 字符编码错误

r - 如何从 R 连接到 .accdb 数据库