我有一个HDF5文件,其中包含复合元素的一维(N x 1)数据集 - 实际上它是一个时间序列.首先将数据离线收集到HFD5文件中,然后进行分析.在分析过程中,大多数数据都变得无趣,只有部分数据很有趣.由于数据集可能非常大,我想摆脱不感兴趣的元素,同时保留有趣的元素.例如,保留500个元素数据集的元素0-100和200-300和350-400,转储其余数据集.但是怎么样?
有没有人有关于如何使用HDF5实现这一目标的经验?显然它可以通过几种方式完成,至少:
由于即使删除了不感兴趣的元素,文件也可能非常大,我宁愿不重写它们(这需要很长时间),但似乎需要实际释放自由空间.来自HDF5专家的任何提示?
HDF5(至少我习惯的版本,1.6.9)不允许删除.实际上,它确实如此,但它没有释放已用空间,结果你仍然有一个巨大的文件.正如你所说,你可以使用h5repack,但这是浪费时间和资源.
你能做的就是让横向数据集包含一个布尔值,告诉你哪些值是"活着的",哪些值已被删除.这不会使文件变小,但至少它为您提供了一种快速执行删除的方法.
另一种方法是在数组上定义一个slab,复制相关数据,然后删除旧数组,或者始终通过slab访问数据,然后根据需要重新定义(我从来没有这样做过,所以我'我不确定它是否可能,但它应该)
最后,您可以使用hdf5挂载策略将数据集放在挂载在根hdf5上的"附加"hdf5文件中.当你想要删除东西时,将有趣的数据复制到另一个已安装的文件中,卸载旧文件并将其删除,然后在适当的位置重新安装新文件.这个解决方案可能很乱(因为你有多个文件)但它允许你释放空间并只在数据树的子部分上操作,而不是使用重新打包.
| 归档时间: |
|
| 查看次数: |
7487 次 |
| 最近记录: |