由于空间问题,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.csv
、ff
和sqldf::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中的并行计算的主要内容,如果未能解决你的问题,请参考以下文章