gpt4 book ai didi

r - 将 R 数据帧写入 Hadoop Hive

转载 作者:可可西里 更新时间:2023-11-01 15:57:14 24 4
gpt4 key购买 nike

我想将 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/

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