开发者社区> 问答> 正文

是否可以序列化一个xarray DataArray,其中包含指向文件的延迟dask-array数据?

我从多个源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

展开
收起
kun坤 2019-12-30 10:01:06 653 0
1 条回答
写回答
取消 提交回答
  • 一般来说,你应该能够做到这一点。Dask和Xarray对象都是可选的。这将把图形序列化成字节,然后可以将其写入文件。 然而,在你的特殊情况下,这个图包含h5py。不幸的是,数据集对象是不可序列化的。 xarray open_dataset方法以各种方式解决这个问题。如果你能将它们与各种concat调用一起使用,那么我认为这可能是你最好的选择,而不是使用h5py。直接数据集对象。

    2019-12-30 10:01:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
HBase2.0重新定义小对象实时存取 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载
用计算和数据去改变整个世界 立即下载