在使用R时,我遇到了一个奇怪的问题:我正在以以下方式处理数据:从数据库中读取数据到数据帧中,填充缺少的值,将数据分组和嵌套到一个组合的主键中,创建一个时间序列并为每个组预测它,解组和清理数据,将其写回DB。
类似这样的东西:https://cran.rstudio.com/web/packages/sweep/vignettes/SW01_Forecasting_Time_Series_Groups.html
对于较小的数据集,这很有吸引力,但对于较大的数据集(超过100000个条目),我确实会从R-Studio看到"R会话中止“屏幕,而nativ R GUI只是停止执行和内爆。我没有查看过的每个日志文件中都有信息。我怀疑这是某种(泄漏)内存问题。
作为一种变通方法,我使用for循环处理数据块。但是,无论区块大小有多小,我都会看到"R会话已中止“屏幕,这看起来很像是内存泄漏。整个日期由大约500万行组成。
我研究了很多像ff,big-Family和matter这样的包,基本上所有来自https://cran.r-project.org/web/views/HighPerformanceComputing.html的东西,但这似乎不能很好地与tibbles和tidyverse的数据处理方式一起工作。
那么,我如何改进我的脚本以处理大量数据呢?如何收集有关R会话中止原因的线索?
发布于 2018-07-25 20:50:52
请访问以下地址查看本文:
datascience.la/dplyr-and-a-very-basic-benchmark
有一个表显示了您正在执行的一些数据处理任务的运行时比较。从表中看,后面有data.table的dplyr可能会比后面有数据帧的dplyr做得更好。
还有一个链接指向用于制作该表的基准测试代码。
简而言之,尝试添加一个键,并尝试在数据帧上使用data.table。
要使x成为您的密钥,并假定您的data.table名为dt,请使用setkey(dt,x)。
发布于 2018-09-07 16:18:24
当Pakes处理所描述的问题时,我找到了潜在问题的解决方案。出于兼容性原因,我在3.4.3版本中使用了R。现在我使用的是较新的3.5.1版本,它工作得很好。
https://stackoverflow.com/questions/51517395
复制相似问题