繁体   English   中英

Dask 到 hdf5 写入失败,“h5py 无法腌制”

[英]Dask to hdf5 write fails, "h5py cannot be pickled"

下面是它产生错误的部分:

procDask = da.stack(procArrays)
print(procDask)
print(procDask.compute())    
    
#da.to_hdf5('out.hdf5',{'/arr',procDask})
    
f = h5py.File('out.hdf5',mode='w')
d = f.require_dataset('/a', shape=procDask.shape, dtype=procDask.dtype)
da.store(procDask, d)

我的 procDask 显示为

dask.array<stack, shape=(3, 3, 3), dtype=int16, chunksize=(1, 3, 3), chunktype=numpy.ndarray>

但是,使用上述任何一种编写方法(注释和未注释的方法)都会出现以下错误:

TypeError: h5py objects cannot be pickled

它有点冗长,显示源代码等,但我想这是主要错误。 我使用的方法错了吗?

编辑:这是一个可以重现错误的代码


def main():
    procArray = da.ones((3,3,3))
    procArray.to_hdf5('testout.hdf5','/arr')
    client.shutdown()

if __name__ == "__main__":
    client = Client()
    main()

正确,H5Py 对象不能被 pickle,因此不能在分布式设置中使用。 我建议使用to_hdf5方法来避免这种情况。 它处理使事情正常运行所需的技巧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM