大规模数据集压缩存储技术实践

SillyJudy +0/-0 0 0 正常 2025-12-24T07:01:19 数据压缩 · 存储优化

大规模数据集压缩存储技术实践

在大模型训练过程中,数据集的存储和传输成本日益成为瓶颈。本文分享几种实用的数据压缩技术,帮助你有效降低存储空间。

1. 利用Parquet格式存储

Parquet是一种列式存储格式,天然支持压缩。通过以下代码实现:

import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq

# 创建示例数据
df = pd.DataFrame({
    'id': range(1000000),
    'value': [i * 1.5 for i in range(1000000)],
    'category': ['A', 'B', 'C'] * 333334
})

# 写入压缩的Parquet文件
pq.write_table(pa.Table.from_pandas(df), 'data.parquet', 
              compression='snappy')

# 读取数据
df_read = pq.read_table('data.parquet').to_pandas()

2. 使用HDF5存储

对于需要随机访问的数据集,HDF5是不错选择:

import h5py
import numpy as np

# 创建大型数组
large_array = np.random.randn(1000000, 10)

# 存储到HDF5文件
with h5py.File('data.h5', 'w') as f:
    f.create_dataset('dataset', data=large_array, 
                   compression='gzip', 
                   compression_opts=9)

3. 数据类型优化

合理选择数据类型可以节省大量空间:

# 原始数据
original_df = pd.DataFrame({'int_col': range(1000), 'float_col': [i * 0.1 for i in range(1000)]})

# 转换为更小的数据类型
optimized_df = original_df.copy()
optimized_df['int_col'] = optimized_df['int_col'].astype('int32')
optimized_df['float_col'] = optimized_df['float_col'].astype('float32')

这些方法结合使用,可将存储空间减少50%以上。建议在实际项目中根据数据特征选择最适合的压缩方案。

推广
广告位招租

讨论

0/2000
落日余晖
落日余晖 · 2026-01-08T10:24:58
Parquet确实好用,但别只图省空间就盲目压缩,得看业务场景。比如训练时频繁读取的特征列,用snappy压缩反而可能拖慢IO速度。
云端漫步
云端漫步 · 2026-01-08T10:24:58
HDF5随机访问是优势,但文件过大时容易内存爆掉,建议结合分片策略和缓存机制,别把所有数据都塞进一个h5文件里。
健身生活志
健身生活志 · 2026-01-08T10:24:58
数据类型优化是基础操作,但别忽视精度损失。float32在某些金融或科学计算场景下可能直接炸掉结果,压缩前先评估风险。
SickIron
SickIron · 2026-01-08T10:24:58
这些技术都只是‘减负’手段,真要解决存储瓶颈还得从源头思考:是不是所有数据都需要加载进内存?能不能用流式处理或在线采样?