Существует ли более быстрый способ экспорта данных из Dask DataFrame в CSV? - PullRequest
3 голосов
/ 23 октября 2019

Я читаю файл CSV (10 ГБ), используя Dask. Затем после выполнения некоторых операций я экспортирую файл в формате CSV, используя to_csv. Но проблема в том, что экспорт этого файла занимает около 27 минут (в соответствии с диагностикой ProgressBar).

CSV-файл содержит 350 столбцов с одним столбцом метки времени, а тип данных другого столбца установлен на float64.

  • Характеристики машины:
    • Intel i7-4610M @ 3,00 ГГц
    • 8 ГБ ОЗУ DDR3
    • 500 ГБ SSD
    • Windows 10 Pro

Я пытался экспортировать в отдельные файлы, такие как to_csv('filename-*.csv'), а также пытался без включения .csv. Итак, Dask экспортирует файл с расширением .part. Но выполнение этого также требует времени, указанного выше.

Я думаю, что это не должно быть проблемой при операциях ввода-вывода, так как я использую SSD. Но я не уверен в этом.

Вот мой код (упрощенно):

df = dd.read_csv('path\\to\\csv')
# Doing some operations using df.loc
df.to_csv('export.csv', single_file=True)

Я использую Dask v2.6.0.

Ожидаемый вывод ->завершите этот процесс за меньшее время, не меняя спецификации машины.

Есть ли возможность экспортировать этот файл за меньшее время?

1 Ответ

1 голос
/ 24 октября 2019

По умолчанию dask dataframe использует многопоточный планировщик. Это оптимально для большинства операций с пандами, но read_csv частично поддерживает GIL, поэтому вы можете попробовать использовать планировщики мультипроцессорной обработки или dask.distributed.

Подробнее об этом см. Здесь: https://docs.dask.org/en/latest/scheduling.html

Если вы можете, я также рекомендую использовать более эффективный формат файла, такой как Parquet

https://docs.dask.org/en/latest/dataframe-best-practices.html#store-data-in-apache-parquet-format

...