【发布时间】:2015-10-01 16:52:10
【问题描述】:
我已多次阅读,在 HDF5 中打开压缩可以带来更好的读/写性能。
我想知道什么理想的设置可以在以下位置获得良好的读/写性能:
data_df.to_hdf(..., format='fixed', complib=..., complevel=..., chunksize=...)
我已经在使用fixed 格式(即h5py),因为它比table 快。我有强大的处理器,不太关心磁盘空间。
我经常将 DataFrames 的 float64 和 str 类型存储在大约 1 个文件中。 2500 行 x 9000 列。
【问题讨论】:
-
压缩级别基本上是处理速度和使用的磁盘之间的权衡。如果您有快速的处理器并且不关心磁盘空间,那么这并不重要,只需让它使用默认值即可。当然,这是 YMMV 的事情之一,除了尝试几种不同的压缩级别并查看对您的特定数据最好的方法之外,这是无可替代的。还要检查每个级别的读写性能,因为这不会是对称的。
-
默认是无压缩,我很确定我可以改进 ;-) 我必须自己尝试,但会欣赏良好的直觉......一些压缩算法有利于其他人的速度用于压缩级别。也不确定块大小实际上会影响什么,或者压缩是否真的适用于
str,因为我相信它存储为Object。我还必须在几台不同的机器上运行它。 -
我的目的是提高执行时间。而且我很确定我也可以通过应用压缩来改进这一点(例如,AHL 使用 lz4 来加速存储数据)。
-
对,我认为就直接执行时间而言,尝试不同类型和级别的压缩并没有太多替代品,尽管也许其他人会有一些一般性的指示。就字符串而言,您可能还希望将它们存储为分类值。这大致相当于字符串压缩,但在将数据帧加载到内存时也会使您受益,而不仅仅是在存储时
-
找到了两个相似的线程(hdf5 concurrency 和pytables write performance)。在示例中使用
blosc压缩似乎达到/超过了不压缩的性能。
标签: pandas compression hdf5 hpc h5py