【问题标题】:How to Import large csv file using parallel programming (particularly foreach package) in R如何在 R 中使用并行编程(特别是 foreach 包)导入大型 csv 文件
【发布时间】:2020-03-08 19:04:21
【问题描述】:

我想使用并行编程在 R 中导入一个大型数据集 包,例如 doparallel、foreach 和 parallel。

【问题讨论】:

  • 您实际需要 1.9GB 的百分比是多少?文件中是否有很多行或列,但您可以过滤/子集?这最终会在 R 之后进入数据库吗?
  • 并行化它并没有帮助:即使你并行读取它,你也有时间从子节点收集到主 R 实例。选项:(1)使用快速阅读器,如readr::read_csvdata.table::fread(其他存在); (2) 读入每个子节点,但就地处理(在节点中,不传回主 R 实例),只返回/传输必要的聚合。

标签: r csv import parallel-processing


【解决方案1】:

您可以使用bigmemory 将其读入R

readFile <- read.big.matrix("", type="integer", header=T, backfile =".bin", extraCols=NULL)

【讨论】:

  • 感谢您的帮助,非常感谢。你知道为什么我在 read.big.matrix("nat2015.csv", type = "integer", header = T, : used argument (backfile = ".bin") 中得到错误吗?
  • nat2015.bin
【解决方案2】:

这听起来像是操作系统的限制。以下是一些可供考虑的选项。

system.time(read.csv('../data/2008.csv', header = T))


library(data.table)
system.time(fread('../data/2008.csv', header = T, sep = ',')) 


library(bigmemory)
system.time(read.big.matrix('../data/2008.csv', header = T))


library(ff)
system.time(read.csv.ffdf(file = '../data/2008.csv', header = T))


library(sqldf)
system.time(read.csv.sql('../data/2008.csv'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 2014-03-15
    • 2015-02-13
    相关资源
    最近更新 更多