我已多次阅读过在HDF5中打开压缩可以带来更好的读/写性能.
我想知道什么样的理想设置可以在以下方面实现良好的读/写性能:
data_df.to_hdf(..., format='fixed', complib=..., complevel=..., chunksize=...)
Run Code Online (Sandbox Code Playgroud)
我已经在使用fixed格式(即h5py),因为它比它更快table.我有强大的处理器,并不关心磁盘空间.
我经常存储DataFrame第float64和str类型的约文件.2500行×9000列.
我正在为HDF5文件编写大量的小数据集,并且生成的文件大小大约是我对所投入数据的天真列表所期望的10倍.我的数据按层次结构组织如下:
group 0
-> subgroup 0
-> dataset (dimensions: 100 x 4, datatype: float)
-> dataset (dimensions: 100, datatype: float)
-> subgroup 1
-> dataset (dimensions: 100 x 4, datatype: float)
-> dataset (dimensions: 100, datatype: float)
...
group 1
...
Run Code Online (Sandbox Code Playgroud)
每个子组应占用500*4字节= 2000字节,忽略开销.我不会在数据旁边存储任何属性.然而,在测试中,我发现每个子组占用大约4 kB,或者大约是我期望的两倍.我知道有一些开销,但它来自哪里,我怎样才能减少它?它是代表群体结构吗?
更多信息:如果我将每个子组中两个数据集的维度增加到1000 x 4和1000,那么每个子组占用大约22,250个字节,而不是我期望的平坦20,000个字节.这意味着每个子组的开销为2.2 kB,并且与我使用较小数据集大小获得的结果一致.有没有办法减少这种开销?