Обработка Xarray / Dask Memory - PullRequest
       52

Обработка Xarray / Dask Memory

0 голосов
/ 17 февраля 2020

Я пытаюсь использовать Xarray и Dask, чтобы открыть многофайловый набор данных. Однако я сталкиваюсь с ошибками памяти.

У меня есть файлы, которые обычно имеют эту форму:

 xr.open_dataset("/work/ba0989/a270077/coupled_ice_paper/model_data/coupled/LIG_coupled/outdata/fesom//LIG_coupled_fesom_thetao_19680101.nc")                          

<xarray.Dataset>
Dimensions:  (depth: 46, nodes_2d: 126859, time: 366)
Coordinates:
  * time     (time) datetime64[ns] 1968-01-02 1968-01-03 ... 1969-01-01
  * depth    (depth) float64 -0.0 10.0 20.0 30.0 ... 5.4e+03 5.65e+03 5.9e+03
Dimensions without coordinates: nodes_2d
Data variables:
    thetao   (time, depth, nodes_3d) float32 ...
Attributes:
    output_schedule:  unit: d first: 1 rate: 1


30 files --> 41.5 GB

Я также могу установить объект dask.distributed Client:

Client()
<Client: 'tcp://127.0.0.1:43229' processes=8 threads=48, memory=68.72 GB>

Итак, если я предполагаю, что для загрузки данных достаточно памяти. Однако когда я запускаю xr.open_mfdataset, я очень часто получаю такие предупреждения:

distributed.worker - WARNING - Memory use is high but worker has no data to store to disk.  Perhaps some other process is leaking memory?  Process memory: 8.25 GB -- Worker memory limit: 8.59 GB

Полагаю, я могу что-то сделать с аргументом chunks?

Любая помощь будет очень ценится; к сожалению, я не уверен, с чего начать. В принципе, я мог бы открыть только первый файл (они всегда будут иметь одинаковую форму), чтобы выяснить, как в идеале перепланировать файлы.

Спасибо! Пол

1 Ответ

1 голос
/ 17 февраля 2020

Примеры ключевых слов chunks и parallel для функций открытия, которые соответствуют тому, как вы используете dask, можно найти в секции do c .

Это должно быть все, что вам нужно!

...