установка состоит в том, что у меня есть восемь больших CSV-файлов (по 32 ГБ каждый), которые сжимаются с Zip-файлами до 8 ГБ каждый.Я не могу работать с несжатыми данными, так как хочу сэкономить дисковое пространство и у меня не осталось 32 * 8 ГБ свободного места.Я не могу загрузить один файл, например, pandas
, потому что он не помещается в память.
Я думал, что Dask - разумный выбор для этой задачи, но не стесняйтесь предлагать другой инструмент, если вы считаете, что он соответствует цели.
Можно ли обработать один сжатый файл объемом 8 ГБ с помощью Dask, читая параллельно несколько фрагментов сжатого файла, обрабатывать каждый фрагмент и сохранять результаты на диск?
Первая проблема заключается в том, что Dask не поддерживает .zip
. В этом выпуске предлагается использовать dask.delayed
, но я также могу изменить формат на .xz
или что-то еще.
Во-вторых, и, вероятно, связано с выборомформат сжатия: возможен ли параллельный доступ только к частям сжатого файла.
Или лучше разбить каждый несжатый файл CSV на более мелкие части, которые помещаются в память, а затем обработать повторно сжатые меньшие части с помощьючто-то вроде этого:
import dask.dataframe as dd
df = dd.from_csv('files_*.csv.xz', compression='xz')
На данный момент, я бы предпочел что-то похожее на первое решение, которое кажется более скудным, но я могу быть совершенно ошибочным, так как эта область является новой для меня.
Спасибо за вашу помощь!