我从多个源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)
然后,我将那个dask数组中的(惰性)片安排到一个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对象,所以不需要每次都计算它。 数据数组中的数据通过dask被延迟映射到hdf5文件。 如何序列化(pickle) ?netcdf吗?为了能够在“延迟映射”持久存在时重新加载xarray对象? 谢谢大家! 问题来源StackOverflow 地址:/questions/59378903/is-it-possible-to-serialize-an-xarray-dataarray-which-holds-lazy-dask-array-data
一般来说,你应该能够做到这一点。Dask和Xarray对象都是可选的。这将把图形序列化成字节,然后可以将其写入文件。 然而,在你的特殊情况下,这个图包含h5py。不幸的是,数据集对象是不可序列化的。 xarray open_dataset方法以各种方式解决这个问题。如果你能将它们与各种concat调用一起使用,那么我认为这可能是你最好的选择,而不是使用h5py。直接数据集对象。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。