如何在postgreSQL(Redshift)数据库中的“大”数据上使用tidyr(或类似数据争论)

如何在postgreSQL(Redshift)数据库中的“大”数据上使用tidyr(或类似数据争论),第1张

概述我在12节点红移群集中有40亿行数据.我成功地使用Rpostgreqsql包连接到它并使用dplyr进行基本数据争用. 但是,我想做一些数据重塑,我通常使用reshape2(dcast)或tidyr(spread)来做.我发现我的数据库对象上都没有执行包.我可以运行“收集”,但这会有问题,因为数据帧太大而无法放入内存(因此我想在DB中运行).我的总体目标是使用dcast / spread来扩大数据 我在12节点红移群集中有40亿行数据.我成功地使用Rpostgreqsql包连接到它并使用dplyr进行基本数据争用.

但是,我想做一些数据重塑,我通常使用reshape2(dcast)或tIDyr(spread)来做.我发现我的数据库对象上都没有执行包.我可以运行“收集”,但这会有问题,因为数据帧太大而无法放入内存(因此我想在DB中运行).我的总体目标是使用dcast / spread来扩大数据范围,同时在此过程中创建0/1标记.这就像我的机器上的小数据样本的魅力,但在数据库上不太好.

下面是我工作的代码.连接到DB并使用dplyr进行基本过滤.当我尝试使用tIDyr / reshape2时,R抛出“类型无法识别”的语法错误

Redshift <- src_postgres('dev',host = 'xxx.aws.com',port = 5439,user = "user",password = "pwd")### create table reference ###df <- tbl(Redshift,"df_cj_allact")# simple and default R commands analyzing data framesdim(df)colnames(df)head(df)df2 <- df %>% filter(ID != '0') %>% arrange(ID,timestamp,category)  # seems to work!# 2157398,was 2306109 (6% loss)
tIDyr包不支持数据库后端.你只能 *** 纵内存数据. dplyr适用于数据库表以及内存对象.您可以尝试使用具有更大内存的计算机(例如在AWS上)并使用data.table,或者考虑拆分数据. 总结

以上是内存溢出为你收集整理的如何在postgreSQL(Redshift)数据库中的“大”数据上使用tidyr(或类似数据争论)全部内容,希望文章能够帮你解决如何在postgreSQL(Redshift)数据库中的“大”数据上使用tidyr(或类似数据争论)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1181822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存