HDF5简介

article/2025/9/12 9:27:46

1、介绍

HDF 是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF 是由美国国家超级计算应用中心(NCSA)创建的,以满足不同群体的科学家在不同工程项目领域之需要。HDF 可以表示出科学数据存储和分布的许多必要条件。HDF 被设计为:

  • 自述性:对于一个HDF 文件里的每一个数据对象,有关于该数据的综合信息(元数据)。在没有任何外部信息的情况下,HDF 允许应用程序解释HDF文件的结构和内容。
  • 通用性:许多数据类型都可以被嵌入在一个HDF文件里。例如,通过使用合适的HDF 数据结构,符号、数字和图形数据可以同时存储在一个HDF 文件里。
  • 灵活性:HDF允许用户把相关的数据对象组合在一起,放到一个分层结构中,向数据对象添加描述和标签。它还允许用户把科学数据放到多个HDF 文件里。
  • 扩展性:HDF极易容纳将来新增加的数据模式,容易与其他标准格式兼容。
  • 跨平台性:HDF 是一个与平台无关的文件格式。HDF 文件无需任何转换就可以在不同平台上使用。

2、HDF5的文件组织

一个HDF5文件就是一个由两种基本数据对象(groups and datasets)存放多种科学数据的容器:

  • HDF5 group: 包含0个或多个HDF5对象以及支持元数据(metadata)的一个群组结构

     

    • HDF5 dataset: 数据元素的一个多维数组以及支持元数据(metadata)

    • Datatypes: Datatypes描述数据集中单个数据元素的数据类型,如下图的32位整数

    • Dataspaces: Dataspaces描述数据集数据元素的布局。下图为3*5的2维(rank)数组

    • Properties: Properties适用于描述hdf5文件的特征,通过修改这些性能,可以提高存储效率。比如默认情况下,数据是连续分布的,为了更好的效能,可以将数据分割成块并压缩。

    • Attributes: 与hdf5文件关联的文件,包含两个部分,名字和值,通俗点讲就是一个描述文件。

    3、dataset介绍

    3.1 storage layout 存储布局

    存储布局分为三种:

    • Contiguous (连续):默认布局,数据以与内存中组织的线性方式相同的方式进行存储。
    • Compact (紧凑):数据量很小并且可以直接存储在对象头中时使用。
    • Chunked (分块):将数据集分成相同大小的“块”,分别存储,只有当前布局支持压缩。 分块有三个重要的好处。
      1. 即使当要选择的子集与数据集的正常存储顺序正交时,也可以在访问数据集的子集时实现良好的性能。
      2. 它可以压缩大型数据集,并在访问数据集的子集时仍能获得良好的性能。
      3. 它可以有效地在任何方向上扩展数据集的维度。

    以下为同一个项目的数据,在不同布局和chunked大小的H5文件对比,当前使用GZIP压缩,压缩等级为6。当前算法输出的为6x566415.h5。

     

    相对于连续和未压缩的chunked文件,压缩后基本上都只有未压缩的25%左右,所以在大数量的情况下,建议使用chunked分块布局并开启压缩。

    3.2 filter 过滤器

    HDF5使用过滤器的概念,针对数据进行前后处理。以下为支持的几种过滤器。

    1. GZIP:GZIP压缩的过滤器;
    2. SZIP:SZIP压缩的过滤器;
    3. SHUF:对字节的位置进行变换,用于提高压缩性能的过滤器。(To improve compression performance, data is regrouped by its byte position in the data unit. In other words, the 1st, 2nd, 3rd, and 4th bytes of integers are stored together respectively.)
    4. FLET:总和校验的过滤器
    5. NBIT:针对n-bit这种数据类型定制的压缩算法。(Data compression using an algorithm specialized for n-bit datatypes.)
    6. SOFF:Scale-offset compression,Data compression using using a “scale and offset” algorithm.
    7. UD:user-defined ,用户自定义的过滤器。
    8. NONE:无过滤器。

    4、HDF5 API库

    API/库

    优点

    缺点

    性能

    HDF5 JNI
    • 官方的正式发行
    • 经过广泛测试并积极维护
    • 需要每个目标操作系统的库
    • 用于读取hyperslabs的单线程实现
    • 低级代码更难实现
    大chunk块情况下,性能低于JHDF
    HDFql
    • 使用标准化查询语言与HDF5文件交互
    • 高级代码更清晰,更易于理解
    • 如果查询格式不正确,则可用的调试信息有限
    • 写入属性和数据集,读取成功测试的属性,但读取数据集在测试期间不起作用
    • 需要POSIX样式的路径,这使得在Windows中很难访问不在C:\驱动器上的文件
    性能较慢
    jHDF
    • 纯Java实现允许使用所有IDE调试和分析工具
    • 可以实现单个块的并行读取
    • 实现了有限功能的库
    • 无法写入HDF5文件
    • 不像其他库那样被广泛采用
    • 没有实现读取hyperslabs的方法(需要自定义代码)
    大chunk块情况下,性能高于HDF5-JNI。作者推荐根据自己的实际场景进行实测以确定最佳的chunk大小。

    go-native-netcdf

    • 纯Go实现允许使用所有IDE调试和分析工具
    • 一般dataset的读取优于jHDF
    • 实现了有限功能的库
    • 不像其他库那样被广泛采用
    • 无法实现单个chunked块的读取;
    无chunk分块读取API

    注:Hyperslabs是数据集的一部分。 hyperslab选择可以是点的逻辑上连续的集合中的数据空间,或者它可以是在数据空间点或块的规则图案

    摘抄自: Parallel IO Improvements • Peter Kirkham (pkirkham.github.io)

    5、hdf5周边工具

    • gif2h5/h52gif:转换GIF和HDF5的工具;
    • h5diff:比较HDF5文件差异的工具;
    • h5dump:可以从HDF5文件中导出ASCII文件的工具;
    • h5import:可以导入ASCII或者二进制到HDF5中的工具;
    • h5perf:HDF5性能工具;
    • h5redeploy:可以新部署HDF5编译工具;
    • h5repack:可以拷贝HDF5文件并且重新指定布局、分块大小和压缩比例等的工具;
    • h5repart:HDF5的分割工具;

参考文档:

HDF5 使用介绍_GaryGao99的博客-CSDN博客_hdf5

大数据存储_hdf5 简介 - 腾讯云开发者社区-腾讯云 (tencent.com)

用户指南|步幅_HDF5简介 (cha138.com)

Chapter 5: HDF5 Datasets (lbl.gov)

HDF5 Tools (hdfgroup.org)

HDF5/Tools API Specification (hdfgroup.org)

Parallel IO Improvements • Peter Kirkham (pkirkham.github.io)

HDF5 File Format Specification Version 3.0 (hdfgroup.org)


http://chatgpt.dhexx.cn/article/PDgdpuVj.shtml

相关文章

HDF5数据的打包与使用(以图像数据为例)

文章目录 1 什么是HDF5数据2 HDF5数据格式的生成3 HDF5数据的查看 注:此篇内容主要作为使用PyTorch构建GAN生成对抗网络博客中,HDF5数据类型的补充介绍。 1 什么是HDF5数据 HDF5 数据是存储在一种名为 Hierarchical Data Format version 5 (HDF5) 的二进…

HDF5-简介

HDF(Hierarchical Data Format)是一种设计用于存储和组织大量数据的文件格式,最开始由美国国家超算中心研发,后来由一个非盈利组织HDF Group支持.HDF支持多种商业及非商业的软件平台,包括MATLAB、Java、Python、R和Jul…

HDF5到底是什么

HDF5到底是什么 《Python和HDF 5大数据应用》——1.2 HDF5到底是什么-阿里云开发者社区 1.2 HDF5到底是什么 HDF5是一种存储相同类型数值的大数组的机制,适用于可被层次性组织且数据集需要被元数据标记的数据模型。 它跟SQL风格的关系型数据库区别相当大&…

HDF5快速上手全攻略

HDF5快速上手全攻略 1. HDF5简介 Hierarchical Data Format(HDF)是一种针对大量数据进行组织和存储的文件格式。经历了20多年的发展,HDF格式的最新版本是HDF5,它包含了数据模型,库,和文件格式标准。以其便捷有效,移植…

Macbook Pro笔记本双系统MacOS和Windows切换默认启动

一、开机切换 开机时,按住option键不要动,等待Macbook Pro出现以下界面,选择你想开机的系统即可。 (BootCamp就是Windows) 二、默认切换,这里分两种情况 1)默认MacOS开机,切换到W…

笔记本双系统Windows10/Deepin15.11体验记录【Deepin15.11体验记录】第一天

笔记本双系统Windows10/Deepin15.11体验记录 【Deepin15.11体验记录】第一天 今天我试着将笔记本安装了第二个系统(基于Linux的Deepin15.11系统),非常成功。之前接触过虚拟机里的Redhat Linux,但是那种是多年前的版本&#xff0…

华硕ROG枪神配置Ubuntu双系统

华硕ROG枪神配置Ubuntu双系统 最近笔记本刚到,华硕ROG枪神6plus,12900HRTX3060(没错,最低配),想着配置一下Ubuntu系统, 但是网上没有相关参考教程,我自己在下面步骤4设置硬盘启动方…

各笔记本安装双系统遇到的问题

目录 联想Y9000P2023款安装ubuntu出现efi usb device has been blocked by the current security policy导致无法进入安装目录 ​编辑 Thinkpad p15 gen1安装双系统遇到的问题 回忆安装xubuntu20.04LTS出现的问题和解决办法: Thinkpad p15 gen1 合盖关机的设置…

苹果笔记本安装Win10双系统+分区教程《原创完整精华版》

苹果笔记本安装Win10双系统分区教程《完整精华版》 写在前面:1.此款笔记本已测试支持安装Win10 1909版本、1903版本。建议安装比较新的Win10版本。2.此教程是先装Win10系统,再进苹果系统分区。最初我想是先分区,再安装,可无论如何…

红米笔记本linux系统版本,小米笔记本安装Win10+Ubuntu16.04 LTS 双系统

安装Win10+Ubuntu16.04 LTS 双系统(持续更新:Ubuntu安装N卡驱动,续航+2小时) 原贴:http://bbs.xiaomi.cn/t-13391152 (来自小米社区玩机教程) 完成图: 目标:安装Win10 + Ubuntu16.04 LTS 双系统 电脑:小米Air 13.3 高配版 工具: 硬件:U盘(2G就够,镜像包解压后文件大小为1.…

dell笔记本安装Ubuntu20.04双系统+cuckoo布谷鸟沙箱

windows下安装Ubuntu20.04双系统cuckoo布谷鸟沙箱 本篇文章主要是在Ubuntu20.04系统上搭建cuckoo沙箱,之前曾尝试在VMware虚拟机里建立Ubuntu,然后再在Ubuntu虚拟机里安装vbox虚拟机,然后搭建沙箱,但是这种虚拟机里安装虚拟机的想…

戴尔笔记本安装双系统(win10+ubuntu20.04)避坑记录

戴尔笔记本安装双系统(win10ubuntu20.04)避坑记录 从最开始DIY到用联想服务器,再到现在的戴尔某笔记本,一路走来都是从csdn上的各路大神帖子上学习安装,帮助很大,避免了很多弯路;但也有一些不太…

华为笔记本linux双系统,真的有必要吗?华为笔记本搭载双系统

近段时间有消息称,华为将会推出一款12.9寸笔记本电脑将会采用PC、平板二合一的设计,同时搭载Intel平台并且支持Windows 10与Android双系统,日常状态下是运行Windows 10的笔记本电脑,而将键盘拆开后则会变为一台Android平板&#x…

苹果电脑装双系统利弊有哪些

很多人购买了苹果电脑以后,很多用户使用MAC系统还是很不习惯,都担心许多Windows软件不能使用了。那么苹果电脑装双系统有什么好处和坏处呢?很多用户都不清楚苹果电脑装双系统利弊在哪,今天,小编就把苹果电脑装双系统利弊有哪些的介绍分享给大家。 更多…

小米笔记本双固态硬盘安装win10+ubantu20双系统 实录

一.基本信息 电脑型号:小米笔记本Pro15.6 显卡型号:NVIDIA GeForce GTX 1050 Max-Q 原装固态硬盘:英特尔 SSDPEKNW010T8 容量:1024G 加装固态硬盘:三星860 EVO M.2接口(SATA总线) 容量&a…

笔记本双系统安装Ubuntu 20.04.3 LTS没有WIFI的解决方法

笔记本双系统安装Ubuntu 20.04.3 LTS没有WIFI 解决方法 最近使用华硕笔记本安装双系统(win10 ubuntu20.04.3 LTS),安装好之后发现Ubuntu系统的设置里面没有wifi功能,就无法连接WIFI,只能使用有线网来上网。弄了好久终…

双系统笔记本 android,电脑安装双系统 微软 安卓 实现一机多用

在windows系统的电脑上再安装一个安卓系统,实现双系统自由切换。在windows系统中操作运行原来的所有程序,干该干的事;在安卓系统中运行安卓软件,比如 安装游戏APP玩手游、安装“电视家”APP取代机顶盒、安装网络教育APP上网课&…

双系统笔记本 android,安卓不止平板有 教你使用笔记本装安卓,和WINDOWS一起双系统亦可以的哦!(图解)...

随着新iPad的发售,苹果CEO蒂姆库克发表了“后PC时代”言论都表明平板市场的迅速扩张。不过现在我们在日常工作中还是离不开笔记本电脑的。通过开发移植,笔记本现在也可以安装只有移动设备才能使用的安卓系统,并实现大部分功能,同时…

华为笔记本换装linux双系统,matebook的win+ubuntu双系统安装方法

本帖最后由 苍星归来 于 2016-11-2 21:55 编辑 相信大家在使用MateBook系统时想安装第三方的系统来体验下别的系统怎么样。今天我就拿UBUNTU系统安装来给大伙抛砖引玉下。 在我体验UNUBTU系统时除了发现蓝牙驱动时不时的丢失外,别的硬件没有问题。 我们要安装新系统那就要先下…

联想服务器双系统安装教程,联想笔记本装win8/win10双系统教程

不少网友对于新win10系统都是持可接受态度,但还是会担心新系统不好用造成电脑日常使用困扰,那很多网友就比较热衷于双系统安装,但不少用户对于双系统安装都比较不了解,那今天给分享分享联想笔记本win8win10双系统安装教程。 准备工…