Ограничение строки в 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"))
Вот что я попробовал:
добавленной
skipNUL=TRUE
чтобы обойти нулевые символы, которые я знаю, существуют в данных.добавленной
quote=""
а также"comment.char=""
чтобы обойти кавычки, знаки фунта и другие символы, которые, как я знаю, существуют в данных.добавленной
na.strings=""
а такжеfill=TRUE
потому что многие поля оставлены пустыми.Пробовал читать это в кодировке UTF-16 (
encoding="UTF-16LE"
) в случае, если специальные символы все еще были проблемой, хотя EmEditor сообщает об этом как UTF-8 без знака.Мой лимит памяти увеличился более чем в три раза с 130000 при использовании
memory.limit(size=500000)
,
Вот что я исключил:
Мои данные не фиксированной ширины, поэтому я не могу использовать
laf_open_fwf
вLAF
, который решил похожую проблему, описанную здесь: http://r.789695.n4.nabble.com/read-table-ffdf-and-fixed-width-files-td4673220.htmlЯ не могу использовать
bigmemory
потому что мои данные включают в себя различные типы данных (коэффициент, дата, целое число, число)В последней импортированной записи нет ничего особенного, что должно привести к прерыванию импорта
Поскольку он последовательно считывает одно и то же число записей каждый раз, и это всегда блок из первых 169+ миллионов записей, я не думаю, что проблема может быть связана со специальными символами, которые встречаются ранее в файле.
Существует ли верхний предел количества записей, которые можно импортировать с помощью read.table.ffdf
? Кто-нибудь может порекомендовать альтернативное решение? Спасибо!
ETA: сообщения об ошибках не возвращаются. Я работаю на сервере под управлением Windows Server 2012 R2 с 128 ГБ ОЗУ и>1 ТБ на диске.