read.table.ffdf中的行限制?

时间:2016-05-01 23:40:32

标签: r read.table ff

我正在尝试使用包ff中的read.table.ffdf从文本文件中导入一个非常大的数据集(101 GB)。该数据集具有> 2.85亿条记录,但我只能读取前169,457,332行。数据集由44个可变宽度列以制表符分隔。我搜索了stackoverflow和其他留言板,并尝试了很多修复,但仍然只能导入相同数量的记录。

这是我的代码:

relFeb2016.test <- read.table.ffdf(x = NULL, file="D:/eBird/ebd_relFeb-2016.txt", fileEncoding = "", nrows = -1, first.rows = NULL, next.rows = NULL, header=TRUE, sep="\t", skipNul = TRUE, fill=T, quote = "", comment.char="", na.strings="", levels = NULL, appendLevels = TRUE,                          strip.white=T, blank.lines.skip=F, FUN = "read.table", transFUN = NULL, asffdf_args = list(), BATCHBYTES = getOption("ffbatchbytes"), VERBOSE = FALSE, colClasses=c("factor","numeric","factor","factor","factor","factor","factor", "factor","factor","factor","factor","factor","factor","factor","factor","factor","factor","factor","factor","factor","factor","factor","numeric","numeric","Date","factor","factor","factor","factor","factor","factor","factor","factor",   "factor","factor","numeric","numeric","numeric","factor","factor","numeric","factor","factor"))

这是我尝试过的:

  1. 添加skipNUL=TRUE以绕过我知道数据中存在的空字符。

  2. 添加quote="""comment.char=""以绕过引号,英镑符号以及我知道数据中存在的其他字符。

  3. 添加了na.strings=""fill=TRUE,因为许多字段都留空了。

  4. 尝试使用UTF-16编码(encoding="UTF-16LE")读取它,以防特殊字符仍然存在问题,但EmEditor将其报告为UTF-8无符号。

  5. 使用memory.limit(size=500000)从130000起将内存限制增加了三倍以上。

  6. 这是我排除的:

    1. 我的数据不是固定宽度的,因此我无法在laf_open_fwf中使用LAF,这解决了此处所述的类似问题:http://r.789695.n4.nabble.com/read-table-ffdf-and-fixed-width-files-td4673220.html

    2. 我无法使用bigmemory,因为我的数据包含各种数据类型(因子,日期,整数,数字)

    3. 上次导入的记录没有什么特别之处应该导致导入中止

    4. 因为它每次始终读取相同数量的记录,并且它始终是前16900万条记录的块,所以我认为问题不能追溯到特殊字符,文件。

    5. 使用read.table.ffdf可以导入的记录数量是否有上限?有人可以推荐替代解决方案吗?谢谢!

      ETA:不会返回任何错误消息。我正在使用运行Windows Server 2012 R2的服务器,驱动器上有128GB RAM和> 1TB。

0 个答案:

没有答案