我有一个带有一维(N x 1)复合元素数据集的HDF5文件 - 实际上它是一个时间序列。 数据首先离线收集到HFD5文件中,然后进行分析。 在分析过程中,大部分数据都不重要,只有其中一些部分是重要的。 由于数据集可能相当大,因此我想摆脱不相关的元素,同时保留感兴趣的元素。 例如,保留500个元素数据集的元素0-100、200-300和350-400,并丢弃其余部分。 但如何操作?
有人使用HDF5完成这项工作吗? 显然有几种方法可以实现:
1. (显而易见的解决方案)创建一个新文件,并逐个元素将必要的数据写入其中。 然后删除旧文件。 2. 或者,在旧文件中创建一个新的数据集,并在那里写入必要的数据。 使用H5Gunlink()取消关联旧数据集,通过运行h5repack来摆脱未声明的空闲空间。 3. 或者,将现有数据集中的有趣元素移动到开始位置(例如,将元素200-300移动到位置101-201并将元素350-400移动到位置202-252)。 然后调用H5Dset_extent()来减少数据集的大小。 然后可能需要运行h5repack以释放空闲空间。
由于即使删除不相关的元素后文件仍可能相当大,因此我宁愿不重写它们(这需要很长时间),但似乎必须实际释放空闲空间。 HDF5专家有何提示?
有人使用HDF5完成这项工作吗? 显然有几种方法可以实现:
1. (显而易见的解决方案)创建一个新文件,并逐个元素将必要的数据写入其中。 然后删除旧文件。 2. 或者,在旧文件中创建一个新的数据集,并在那里写入必要的数据。 使用H5Gunlink()取消关联旧数据集,通过运行h5repack来摆脱未声明的空闲空间。 3. 或者,将现有数据集中的有趣元素移动到开始位置(例如,将元素200-300移动到位置101-201并将元素350-400移动到位置202-252)。 然后调用H5Dset_extent()来减少数据集的大小。 然后可能需要运行h5repack以释放空闲空间。
由于即使删除不相关的元素后文件仍可能相当大,因此我宁愿不重写它们(这需要很长时间),但似乎必须实际释放空闲空间。 HDF5专家有何提示?