将rDataframe写入hadoop配置单元

olmpazwi  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(325)

我想把r中的一个Dataframe写到hadoop配置单元中的一个新表中。我在rodbc包中使用sqlsave(),如下所示。表结构是在hadoop中创建的,但是在将任何数据插入表之前,我遇到了一个错误。错误消息包含在下面。关于如何将r中的Dataframe写入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' )'
dohp0rv5

dohp0rv51#

实际上我也有同样的问题,我需要我们团队的用户开始使用hive,他们中的大多数都是hive用户。到目前为止,我做了以下工作:-在r中创建一个自定义函数,为新的配置单元表自动生成create table语句-在准备配置单元时进行数据类型转换,将因子转换为字符,排列日期格式-生成要加载到配置单元的文本文件-使用rhdfs将文本文件移动到hadoop(在我的示例中是mapr),在您想要的位置(外部表)或加载到配置单元仓库。
希望有人有更好的解决办法,但对我来说这是工作。通过创建r包来实现过程自动化,但我还远远没有完成。

相关问题