由于空间问题,R中的并行计算

Posted

技术标签:

【中文标题】由于空间问题,R中的并行计算【英文标题】:Parallel computing in R, due to space issues 【发布时间】:2015-11-15 11:08:23 【问题描述】:

我被大量数据集困在 R 中,然后处理它(通过 randomForest)。基本上,我有一个大约 100K 行和 6K 列的 csv 文件。直接导入它需要很长时间,并会出现许多关于空间分配的警告(达到 8061mb 的限制)。在许多警告结束时,我确实在 R 中获得了该数据框,但不确定是否依赖它。即使我使用该数据框,我也很确定在其上运行 randomForest 肯定会是一个大问题。因此,我的问题分为两部分:

    如何高效地导入如此大的 csv 文件而不会出现任何警告/错误? 导入 R 后,如何继续使用 randomForest 函数。

我们是否应该使用一些可以提高计算效率的包。欢迎任何帮助,谢谢。

【问题讨论】:

data.table::fread 或 readr::read_csv。这些读取大文件的速度要快得多(fread 具有优势)。指定要读取的行数也会有所帮助。 要导入大文件,请使用data.table::fread。它比read.csvffsqldf::read.csv.sql 更快。 哇……太棒了,文件在 38 秒内用 fread 导入了……感谢 phiver 和 Narendra,为我的第一个问题关闭。 【参考方案1】:

实际上,您在 R 中加载文件的限制似乎是 8G,如果您的机器有更多内存,请尝试增加该限制。

如果这不起作用,一种选择是您可以从 R 提交到 MapReduce(请参阅 http://www.r-bloggers.com/mapreduce-with-r-on-hadoop-and-amazon-emr/ 和 https://spark.apache.org/docs/1.5.1/sparkr.html)。但是,目前尚不支持随机森林。

【讨论】:

以上是关于由于空间问题,R中的并行计算的主要内容,如果未能解决你的问题,请参考以下文章

R语言并行计算中的内存控制

R中的并行计算,用于通过循环保存数据

在一组不同的解释变量上并行化 R 中的面板 logit 计算

如何进行两台计算机并行计算

R语言并行化基础与提高

R语言高性能编程