问题标签 [zarr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
206 浏览

python - 将 netcdfs 转换为 zarr 并重新分块时 CPU 利用率低

我正在将数据从 netcdf 传输和重新分块到 zarr。该过程很慢,并且没有使用太多的 CPU。我尝试了几种不同的配置,有时它似乎做得稍微好一点,但效果不佳。有没有人有任何提示可以更有效地运行?

最后一次尝试(以及之前的一些尝试,可能是所有尝试)(使用单机、分布式调度程序和使用线程)日志给出了以下消息:

Distributed.core - 信息 - 事件循环在 Worker 中无响应 10.05 秒。这通常是由长时间运行的 GIL 持有函数或移动大块数据引起的。

CPU 利用率。 它开始时很低,然后下降得更低。

以前我遇到过内存用完的错误,所以我正在使用下面的“stepwise_to_zarr”函数分段编写 zarr:

在上图中,利用率从约 6% 下降到约 0.5% 似乎与完成 10 度纬度的第一批“批次”相吻合。

背景资料:

  • 我正在使用 32 个 vCPU 和 256 GB 内存的单个 GCE 实例。
  • 数据大约 600 GB,分布在大约 150 个 netcdf 文件中。
  • 数据在 GCS 中,我正在使用 Cloud Storage FUSE 读取和写入数据。
  • 我将数据从块大小重新分块:{'time':1,'latitude':521,'longitude':1440} 到块大小:{'time':8760,'latitude':21,'longitude':20}

我努力了:

  • 使用默认的多处理调度程序
  • 对单机(https://docs.dask.org/en/latest/setup/single-distributed.html)使用分布式调度程序,processs=True 和 processes=False。
  • 分布式调度程序和默认的多处理调度程序,同时还设置环境变量以避免过度订阅线程,如下所示:

如最佳实践中所述(https://docs.dask.org/en/latest/array-best-practices.html?highlight=export#avoid-oversubscribing-threads

0 投票
1 回答
287 浏览

python - 使用 pytorch 数据加载器的开始和结束在 zarr 数组上创建生成器

我正在做一个 pytorch 项目,我的数据保存在zarr.

随机访问zarr代价高昂,但由于zarr使用了块缓存,迭代非常快。为了利用这一事实,我将 anIterableDataset与多个工人一起使用:

问题在于,self.array对于行的顺序和10e9连续的工作人员,随着自然地变大,创建生成器需要花费我的训练/验证过程的大量时间,因为仍然必须迭代不需要的元素直到它到达. 一旦为每个工人创建了一个生成器,这就像一个魅力,但要到达那里需要太长时间。self.startself.enditertools.islice(array, start, end)islicestart

有没有更好的方法来创建这样的生成器?或者也许有更聪明的方法来使用zarrin pytorch

0 投票
1 回答
323 浏览

arrays - 如何将 numpy 数组转换为 Zarr 数组

假设我将一个简单的列数据框转换为一个 numpy 数组:

我的任务是将 numpy 数组转换为Zarr文件格式(由于rast值的大小和数据帧的大小,可能需要分块和压缩,并且可以在 S3/云上更好地利用新的 .zarr 文件存储环境,我假设)。我创建了一个简单的Zarr数组,如下所示:

现在,我如何将数据raster_np输入z_test并保留Zarr属性?简单地使用z_test = raster_np显然是行不通的。也许我对某些事情有误解Zarr。有什么建议么?

0 投票
1 回答
26 浏览

python - 通过运行测试套件验证 Zarr 是否已完全安装

在 Zarr 上建议的 cmds:

我试图让它发挥作用:

我得到的错误

我检查了路径,确实该文件'pytest'在其他地方。不确定我是否可以(以及如何)更改路径或位置以使 cmd 运行

0 投票
2 回答
444 浏览

python - 获取 zarr 数组切片的视图

我想生成一个指向磁盘上 zarr 数组的一部分的zarr数组,类似于如何sliced = np_arr[5]让我查看. 示例代码:np_arrslicednp_arr

有什么我可以写的,而不是arr_slice = arr[1]让磁盘上的数组arr_slice成为一个(可写的)视图?arr

0 投票
0 回答
30 浏览

classification - 如何以 zarr 格式动态存储一组图像和标签?

我已阅读 zarr 文档,但无法做到这一点。我想要这样的树格式:

谢谢你。

0 投票
1 回答
572 浏览

python - xarray.Dataset.to_zarr:如果存在,则使用 append_dim 覆盖数据

使用xarray.Dataset.to_zarr可以将 xarray 写入文件并使用参数.zarr沿维度附加新数据。append_dim

但是,如果该维度的新数据的坐标已经存在,则不会替换现有数据。相反,相同的坐标在结果日期集中出现两次。

使用此处数据的示例:

在这里,我将 2 个数据集写入同一个 .zarr 文件。数据集沿space维度附加。两个数据集包含相同的空间坐标"IL"

读取文件时,第二个数据集没有覆盖"IL"坐标数据,而是创建了一个新数据集:

这将是期望的结果:

如果坐标已经存在,有谁知道是否可以替换数据?

0 投票
0 回答
30 浏览

python-xarray - 将文件写入 zarr.storage.DBMStore 时超时,这会使整个 zarr 存储不可读

我是 zarr 的新手,并尝试使用 Xarray 将文件输出到 zarr.storage.DBMStore。由于数据集非常大,我多次计算并将结果输出到一个 zarr.storage.DBMStore(附加 dim='time')。但是,每次程序因超时而失败时(我每次都从队列中请求 4 小时),我似乎无法访问之前已经写入此 zarr 存储的文件。我想知道如何处理这样的问题?

以下是我在 zarr 存储中写入和读取文件的代码,以及超时尝试后的错误消息:

超时错误后:

感谢任何帮助!

0 投票
0 回答
50 浏览

python - 优化 zarr 数组处理

我有一个包含 80 个 5-D zarr 文件的列表(mylist),其结构如下(T、F、B、Az、El)。该数组的形状为 [24x4096x2016x24x8]。

我想提取切片数据并使用以下函数沿某个轴运行概率

如果我使用以下方法调用该函数,

我发现在 40 核、256 GB RAM 上运行需要很长时间(超过 3 小时)

有没有办法让它运行得更快?

谢谢

0 投票
1 回答
316 浏览

python-xarray - getting KeyError '.zmetadata' when opening remote zarr store

Trying to read in a zarr store from s3 using xarray. Getting a Key Error. Any thoughts

I can open it locally ok if I download it first:

Here's the Traceback associated with the top command