Как работает dask для наборов данных, превышающих объем памяти - PullRequest
0 голосов
/ 23 февраля 2019

Кто-нибудь сможет сказать мне, как dask работает для набора данных, превышающего набор данных памяти, в простых терминах.Например, у меня есть набор данных, который составляет 6 ГБ и 4 ГБ оперативной памяти с 2 ядрами.Как можно было бы выполнить загрузку данных и выполнить простой расчет, такой как сумма столбцов.

Делает ли dask автоматически , проверяет ли размер памяти и разбивает ли набор данных на части меньше, чем фрагменты памяти.Затем, когда-то просили вычислить, принести порцию за порцией в память и выполнить вычисления, используя каждое из доступных ядер.Я прав в этом.

Спасибо

Майкл

1 Ответ

0 голосов
/ 23 февраля 2019

Под "набором данных" вы, очевидно, ссылаетесь на фрейм данных.Давайте рассмотрим два формата файлов, из которых вы можете загружать файлы: CSV и паркет.

  • Для файлов CSV в файле нет встроенного механизма разбиения на фрагменты, поэтому вы, пользователь, можете выбратьчисло байтов на блок соответствует вашему приложению с помощью dd.read_csv(path, blocksize=..) или позволяет Dask попытаться сделать правильное предположение;"100MB" может быть хорошим размером.

  • Для паркета в самом формате есть внутренняя порция данных, и Dask будет использовать этот шаблон при загрузке данных

В обоих случаях каждый работник будет загружать по одному куску за раз и вычислять сумму столбца, которую вы просили.Затем загруженные данные будут отброшены, чтобы освободить место для следующего, сохранив только результаты суммы в памяти (одно число для каждого раздела).Если у вас есть два рабочих, два раздела будут находиться в памяти и обрабатываться одновременно.Наконец, все суммы складываются вместе.

Таким образом, каждый раздел должен удобно вписываться в память - не быть слишком большим - но время, необходимое для загрузки и обработки каждого, должно быть намного больше, чем накладные расходы, накладываемые планированием.задача, выполняемая на работнике (последняя <1 мс) - не слишком мала. </p>

...