【发布时间】:2019-01-02 04:25:22
【问题描述】:
在使用 R 时,我遇到了一个奇怪的问题: 我正在以下列方式处理日期: 将数据从数据库读取到数据框中,填充缺失值,将数据分组并嵌套到组合主键中,创建时间序列并为每个组进行预测,取消分组和清理数据,将其写回数据库。
类似这样的: https://cran.rstudio.com/web/packages/sweep/vignettes/SW01_Forecasting_Time_Series_Groups.html
对于小型数据集,这就像一个魅力,但对于较大的数据集(超过大约 100000 个条目),我确实从 R-Studio 获得了“R Session Aborted”屏幕,并且 nativ R GUI 只是停止执行并内爆。 我查看的每个日志文件中都没有信息。我怀疑这是某种(泄漏)内存问题。
作为一种解决方法,我正在使用 for 循环分块处理数据。但无论块大小有多小,我都会看到“R Session Aborted”屏幕,这看起来很像内存泄漏。 整个日期由大约 500 万行组成。
我对@987654325@、big-Family 和matter 等软件包进行了很多研究,基本上来自https://cran.r-project.org/web/views/HighPerformanceComputing.html 的所有内容
但这似乎不适用于tibbles 和tidyverse 的数据处理方式。
那么,如何改进我的脚本以处理大量数据? 如何收集有关 R 会话中止原因的线索?
【问题讨论】:
-
你用的是什么机器?尝试更大的;)
-
我认为这不会有帮助,因为内存 (8 GB) 总是只有一半满。
-
听起来你可能会从
data.table获得一些里程——Getting Started 页面有一组很好的资源。在他对规范问题data.table vs dplyr: 的回答中,Hadley 就 dplyr 的设计陈述了以下几点:“内存和性能:我将它们混为一谈,因为对我来说,它们并不那么重要”我> 。底线是,如果您尝试使用大型数据集,dplyr、tibbles和其他“整洁”的结构会妨碍您。 -
感谢您的洞察,但是如果没有
tidyUniverse,我如何执行如此复杂的数据操作?
标签: r large-data tidyverse