是否可以序列化保存指向文件的惰性dask-array数据的xarray DataArray?

我已经从多个源hdf5文件构建了一个庞大的dask阵列。

假设,数据仅来自一个hdf5文件:

import dask.array as da
import h5py
import xarray as xr

h5_data = h5py.File(path_to_file,"r")
dask_arr = da.from_array(h5_data,chunks=chunksize)

然后,我将该数组中的切片(惰性)排列到一个xarray数据集中

xr_data = xr.DataArray(dask_arr[0:1000])
# Note: In reality,xr_data and dask[0:1000] aggregation is much more complex and needs quite long to process

现在,我想序列化xr_data对象,因此不需要每次都计算它。

xarray DataArray中的数据通过dask延迟映射到hdf5文件。 如何在“惰性映射”持续存在的情况下进行序列化(点刺?netcdf?...)以能够重新加载xarray对象?

谢谢你!

zhongyi9927 回答:是否可以序列化保存指向文件的惰性dask-array数据的xarray DataArray?

通常,您应该可以执行此操作。 Dask和Xarray对象都是可腌制的。这样会将图形序列化为字节,然后可以将其写入文件。

但是,在您的特殊情况下,此图包含h5py.Dataset对象,不幸的是,这些对象无法序列化。

xarray open_dataset方法以各种方式解决了这个问题。如果您可以将它们与各种concat调用一起使用,那么我认为这可能是最好的选择,而不是直接使用h5py.Dataset对象。

本文链接:https://www.f2er.com/2904605.html

大家都在问