我正在打开一个zarr文件,然后重新缓存它,然后将它写回另一个zarr存储。然而,当我打开它的时候,它并不尊重我之前写的块大小。以下是jupyter的代码和输出。知道我做错了什么吗
bathy_ds = xr.open_zarr('data/bathy_store')
bathy_ds.elevation
bathy_ds.chunk(5000).elevation
bathy_ds.chunk(5000).to_zarr('data/elevation_store')
new_ds = xr.open_zarr('data/elevation_store')
new_ds.elevation
它正在恢复到原始的分块,好像我没有完全覆盖它或更改需要更改的其他设置
这似乎是一个已知的issue,并且在该问题的线程和recently merged PR中正在进行相当多的讨论
基本上,数据集在
.encoding
属性中携带原始分块。因此,当您调用第二个写入操作时,在ds[var].encoding['chunks']
(如果存在)中定义的块将用于将var
写入zarr根据GH问题中的对话,目前最好的解决方案是手动删除相关变量的区块编码:
然而,应该注意的是,这似乎是一种不断演变的情况,最好检查进展情况,以适应最终解决方案
下面是一个小示例,展示了问题和解决方案:
相关问题 更多 >
编程相关推荐