对比
HDF5 与 Zarr
HDF5 在通用容器中层级组织组和数据集。Zarr 将多维分块数组及元数据表示为存储中的独立键,适用于文件系统和对象存储。
应该选择哪种格式?
已有 HDF5 文件、异构层级数据或依赖 HDF5 工具时优先选 HDF5。对象存储需要独立访问数组块时考虑 Zarr,并在实际环境测试版本与编解码器。
适用于 HDF5
以层级结构存储大型科学和技术数据 · 在一个容器中保存多维数组及相关元数据
- 用组、数据集和属性组织复杂数据
- 需要局部读写或数据集级压缩的科学工作流
适用于 Zarr
分块保存大型多维数组 · 处理云对象存储中的科学数据
- 高效读取大型数组的指定区域
- 在兼容工具间共享分片数据
基本信息
| 项目 | HDF5 | Zarr |
|---|---|---|
| 扩展名 | .h5, .hdf5 | .zarr |
| MIME 类型 | ||
| 常见用途 | 以层级结构存储大型科学和技术数据 · 在一个容器中保存多维数组及相关元数据 | 分块保存大型多维数组 · 处理云对象存储中的科学数据 |
| 打开方式 | 使用支持 HDF5 的可视化或分析软件、或程序库打开。检查组层级、数据集形状与类型、属性和筛选器。不同应用可能定义自己的 HDF5 约定,请同时查阅创建者文档。 | 使用支持Zarr的库或分析工具。检查版本、数组形状、分块网格、codec和属性;保留整个本地目录或所需对象键,并参考创建者文档。 |
| 导出或转换 | 转换为 CSV、Parquet、FITS 等格式前,先确定如何映射层级、数组维度和类型、属性、单位与坐标。目标格式可能无法表达某些结构或元数据;请保留原文件并核对数据。 | 从netCDF或HDF5转换时,检查维度、类型、分块、属性和坐标约定映射。保留原始数据,并在转换后验证数值。 |
按用途选择
用组、数据集和属性组织复杂数据
以层级结构存储大型科学和技术数据 · 在一个容器中保存多维数组及相关元数据
HDF5需要局部读写或数据集级压缩的科学工作流
以层级结构存储大型科学和技术数据 · 在一个容器中保存多维数组及相关元数据
HDF5高效读取大型数组的指定区域
分块保存大型多维数组 · 处理云对象存储中的科学数据
Zarr在兼容工具间共享分片数据
分块保存大型多维数组 · 处理云对象存储中的科学数据
Zarr关键点 1
HDF5 在文件内部保存组、数据集和属性;Zarr 将数组或组的元数据及块数据映射为存储键。
进一步了解差异关键点 2
HDF5 是可选分块和压缩的通用层级模型;Zarr 规范 N 维数组、分块网格、编解码器和存储键。
进一步了解差异进一步了解差异
文件式层级结构和现有 HDF5 应用很重要时选 HDF5。工作流受益于存储中的分块读写时考虑 Zarr,并用真实访问模式和后端进行测试。
- HDF5 在文件中存储组、数据集和属性;Zarr 将元数据文档与编码块作为存储中的独立键保存。
- HDF5 提供通用数据模型和可配置布局;Zarr 规范分块数组、网格、编解码器和键的构造方式。
- 局部读取性能取决于块形状、访问模式、缓存和后端。迁移时验证数据类型、缺失值、属性、编解码器、分块及并行访问。
常见问题
Zarr 的数组局部读取总比 HDF5 快吗?
不一定。速度取决于块形状、工作负载、缓存、实现和存储后端;应测试代表性访问。