我有一个dask数据集(在磁盘上大约200GB),我在其上执行一些计算(屏蔽和累加海冰范围)。我正在尝试写出这个dask数据集:
ds_mod_trim = <xarray.DataArray (ensemble: 12, init_time: 408, fore_time: 1367)>
dask.array<shape=(12, 408, 1367), dtype=float64, chunksize=(12, 408, 40)>
Coordinates:
* init_time (init_time) datetime64[ns] 1980-01-01 1980-02-01 1980-03-01 ...
* ensemble (ensemble) int64 1 2 3 4 5 6 7 8 9 10 11 12
* fore_time (fore_time) timedelta64[ns] 0 days 29 days 30 days 31 days ...
到这样的多个netcdf文件:
c_e, datasets = zip(*ds_mod_trim.to_dataset(name='sic').groupby('ensemble'))
paths = ['GFDL_extent_esns_%s.nc' % e for e in c_e]
xr.save_mfdataset(datasets, paths)
其中:
datasets[0] = <xarray.Dataset>
Dimensions: (fore_time: 1367, init_time: 408)
Coordinates:
* init_time (init_time) datetime64[ns] 1980-01-01 1980-02-01 1980-03-01 ...
ensemble int64 1
* fore_time (fore_time) timedelta64[ns] 0 days 29 days 30 days 31 days ...
Data variables:
sic (init_time, fore_time) float64 dask.array<shape=(408, 1367), chunksize=(408, 40)>
产生“被杀”。当我观察内存使用情况时,它会保持在85-90%左右,但在系统冻结之前CPU使用率从100%上升到~650%,我得到“杀死”。
当我检查目录时,文件已使用正确的尺寸/坐标创建,但缺少正确的变量(无数据)。
我期望save_mfdataset()来处理这个用例?我做错了吗?