dask - 处理 Xarray/Dask 内存
问题描述
我正在尝试使用 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 参数做些什么?
任何帮助将不胜感激;不幸的是,我不确定从哪里开始尝试。原则上,我可以只打开第一个文件(它们将始终具有相同的形状)以找出如何理想地重新分块文件。
谢谢!保罗
解决方案
可以在此文档部分chunks
中找到与您如何使用 dask 相对应的打开函数的和关键字示例。parallel
这应该就是你所需要的!
推荐阅读
- javascript - AJAX 函数未从它调用的函数接收返回数据
- node-modules - Yarn 离线镜像无法按预期工作
- c# - 流畅的验证从描述中删除逗号
- javascript - 在表单提交上重新加载 html 表
- microsoft-graph-api - 如何使用 Microsoft.Graph 更新联系人?
- java - Kubernetes 节点中的高磁盘 IO
- hadoop - Nifi 在特定的公共标头上加入两个 CSV 流文件
- python - 有选择地访问 numpy 3D 矩阵的行
- python - 如何在 python 脚本中检查 Windows 10 上哪个虚拟桌面处于活动状态?
- arrays - scala中的字符串插值不允许从数组中选择字符串