前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zarr真的能替代NetCDF4和HDF5吗

Zarr真的能替代NetCDF4和HDF5吗

作者头像
bugsuse
发布2022-09-23 13:54:04
1.8K0
发布2022-09-23 13:54:04
举报
文章被收录于专栏:气象杂货铺

气象领域的数据存储格式大多都是netCDF、HDF、Grib格式,这些文件格式已经发展的比较成熟了,大家也都已经习惯了处理这些格式的文件。但随着数据量的增加以及云计算的发展,这些文件系统已经无法满足需求,针对云计算优化的文件系统应运而生。

Zarr 是一种存储分块、压缩的N维数组格式。由于 Zarr 格式比 NetCDF4/HDF5 格式具有更快的处理速度,已经在云平台得到较为广泛的应用。近几年在国外地球科学领域也得到了广泛关注。

Unidata在2019年开始在netCDF-C中引入Zarr支持,并从4.8.0版本开始正式支持Zarr,命名为NCZarr。

已有相关人员测试了通过netCDF和Zarr两种方式处理NOAA在AWS的GOES卫星数据并进行绘图的效率,结果发现:使用Zarr格式比netCDF格式效率提高非常明显。

Zarr和NetCDF格式效率对比

之前也大概了解过 Zarr,之所以要专门介绍 Zarr 是因为在处理数据的过程中,由于需要进行大文件读写操作,而使用 NetCDF 格式写入数据时速度很慢,并且为了避免对文件进行分割实现文件的并行读写,便尝试了Zarr。

在初步尝试时,使用 Zarr 格式写入数据时比使用 xarray 写入 NetCDF 文件快了 2 倍未进行数据压缩)。在对数据压缩时,Zarr 格式比 NetCDF 格式的写入速度快了差不多 6 倍,从 184 秒降为 31 秒。数据的存储效率提升非常明显,而且存储空间也有所降低

总的来说,相比于 NetCDF 和 HDF5 而言, Zarr 尚处于完善阶段,仍不成熟。但在未来数据上云的情况下,Zarr还是有不错的发展前景。

Zarr主要具有以下特点:

  • 使用任意 Numpy 数据类型创建 N维数组
  • 沿任意维度对数组分块
  • 使用任意 NumCodecs 规则压缩或过滤分块数组
  • 在内存、磁盘、Zip文件、S3等存储数组
  • 多线程/进程并行读取数组
  • 多线程/进程并行写数组
  • 通过组对数组排列为层次结构

安装

可直接通过 pip 进行安装

代码语言:javascript
复制
pip install zarr

或者通过 conda 进行安装

代码语言:javascript
复制
conda install -c conda-forge zarr

或通过github安装最新开发版本

代码语言:javascript
复制
pip install git+https://github.com/zarr-developers/zarr-python.git

食用方法

xarray中提供了非常方便的Zarr格式的读写方法,通过 xr.open_zarrxr.to_zarr 函数可以实现对 Zarr 格式的读写操作。值得注意的是:xarray 不支持通过 netCDF 格式的增量写文件,支持 Zarr 格式的增量写文件。增量读写在一些场景下是非常关键的,尤其是在数据集较大内存不足的情况下。

Zarr官方文档提供了更为详细的使用说明,这里就不多说了,以后有更具体的使用场景再展开。感兴趣的可以去看一下。

对于课题组个人而言,对文件读写也有较高要求的可以尝试。如果对如果是对文件读写有较高要求的业务部门可以尝试采用Zarr格式来进一步改善效率,但是要注意目前Zarr尚未发展成熟,关键业务仍不建议采用Zarr,除非部门有对文件IO部分特别熟悉的,有备份补救措施。

后话

又是一篇没有什么代码的推送~ 看了一些机构的测试结果,总的来说,不管你是否需要上云,都可以使用 Zarr。在大量文件读写方面我已经逐渐转向 Zarr 了,后续可能也会更新一些这方面的推送,毕竟目前xarray在文件并行读写方面Zarr的支持比netCDF要好一些。

参考链接:

1. https://zarr.readthedocs.io/en/stable/

2. https://www.unidata.ucar.edu/blogs/news/entry/netcdf-and-native-cloud-storage

3. https://www.unidata.ucar.edu/blogs/developer/en/entry/netcdf-zarr-data-model-specification

4. https://www.unidata.ucar.edu/blogs/developer/entry/overview-of-zarr-support-in

5. https://nbviewer.jupyter.org/github/oceanhackweek/ohw20-tutorials/blob/master/10-satellite-data-access/goes-cmp-netcdf-zarr.ipynb

—END—

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气象汇 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 食用方法
  • 后话
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档