我想问一个关于压缩性能的问题 这与hdf5文件的块大小有关。
我手头有2个hdf5文件,它们具有以下属性。 它们都只包含一个数据集,称为“数据”。
文件A的“数据”:
文件B的“数据”:
文件A的大小: HDF5 ---- 19 MB CSV ----- 165 MB
文件B的大小: HDF5 ---- 60 MB CSV ----- 165 MB
与csv文件比较时,它们都显示对存储数据的强大压缩。 但是,文件A的压缩率约为原始csv的10%, 而文件B的仅为原始csv的约30%。
我尝试了不同的块大小使文件B尽可能小,但似乎30%是最佳压缩率。我想问一下,为什么文件A可以实现更大的压缩,而文件B则不能。
如果文件B也可以实现,那么块大小应该是多少?
是否有任何规则来确定HDF5的最佳块大小以用于压缩目的?
谢谢!
答案 0 :(得分:10)
Chunking并不会真正影响压缩比本身。分块的作用是影响I / O性能。当压缩应用于HDF5数据集时,它将单独应用于整个块。这意味着当从数据集中的单个块读取数据时,必须对整个块进行解压缩 - 可能涉及更多的I / O,具体取决于缓存的大小,块的形状等。
您应该做的是确保块形状与您读/写数据的方式相匹配。如果您通常一次读取一列,请创建您的块列。 This is a good tutorial on chunking.