У меня есть блок кода (называемый кленом), который распаковывает сотни файлов, а затем загружает каждый файл в каждую собственную таблицу или семейство файлов в таблицу.Один файл превысил 4 ГБ, поэтому я больше не могу использовать R unzip.Это то, что я сделал, но выполнение сценария теперь занимает в 5 раз больше времени, что не вариант.Код является частью функции, которая вызывается через «apply».Сценарий также выполняется в нескольких узлах
Я считаю, что проблема в том, что system2 - unzip работает синхронно.Если я удалю стандартный вывод, он должен работать асинхронно, верно?Но тогда он не сможет загрузить файл, поскольку он не будет разархивирован.
if (file < than 4GB) {
unzip(zip_file, file_name, exdir=down_dir)
} else
system2("unzip", args = c("-o", zip_file, file_name, paste0("-d ", down_dir)), stdout = TRUE, stderr = TRUE))
}
... code to load file into a table
Ожидается: что синхронный поток будет применяться только к этому условию, а остальные файлы будут обрабатываться асинхронно.На самом деле: Если затронуто обработка сотен файлов, которые распаковываются через R unzip