Ограничение строки в read.table.ffdf?

Я пытаюсь импортировать очень большой набор данных (101 ГБ) из текстового файла, используя read.table.ffdf в пакете ff. Набор данных содержит>285 миллионов записей, но я могу читать только в первых 169 457 322 строках. Набор данных разделен табуляцией с 44 столбцами переменной ширины. Я искал stackru и другие доски объявлений и перепробовал множество исправлений, но все еще последовательно могу импортировать только то же количество записей.

Вот мой код:

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. Мой лимит памяти увеличился более чем в три раза с 130000 при использовании memory.limit(size=500000),

Вот что я исключил:

  1. Мои данные не фиксированной ширины, поэтому я не могу использовать laf_open_fwf в LAF, который решил похожую проблему, описанную здесь: http://r.789695.n4.nabble.com/read-table-ffdf-and-fixed-width-files-td4673220.html

  2. Я не могу использовать bigmemory потому что мои данные включают в себя различные типы данных (коэффициент, дата, целое число, число)

  3. В последней импортированной записи нет ничего особенного, что должно привести к прерыванию импорта

  4. Поскольку он последовательно считывает одно и то же число записей каждый раз, и это всегда блок из первых 169+ миллионов записей, я не думаю, что проблема может быть связана со специальными символами, которые встречаются ранее в файле.

Существует ли верхний предел количества записей, которые можно импортировать с помощью read.table.ffdf? Кто-нибудь может порекомендовать альтернативное решение? Спасибо!

ETA: сообщения об ошибках не возвращаются. Я работаю на сервере под управлением Windows Server 2012 R2 с 128 ГБ ОЗУ и>1 ТБ на диске.

0 ответов

Другие вопросы по тегам