[ PROMPT_NODE_27562 ]
io_operations
[ SKILL_DOCUMENTATION ]
# I/O 操作
本参考涵盖文件输入/输出操作、格式转换、导出策略以及在 Vaex 中使用各种数据格式。
## 概述
Vaex 支持多种文件格式,性能特性各异。格式的选择会显著影响加载速度、内存使用和整体性能。
**格式建议:**
- **HDF5** - 最适合大多数用例(瞬间加载,内存映射)
- **Apache Arrow** - 最适合互操作性(瞬间加载,列式存储)
- **Parquet** - 适合分布式系统(压缩,列式存储)
- **CSV** - 大数据集应避免使用(加载慢,不支持内存映射)
## 读取数据
### HDF5 文件 (推荐)
python
import vaex
# 打开 HDF5 文件 (瞬间加载,内存映射)
df = vaex.open('data.hdf5')
# 将多个文件作为一个 DataFrame
df = vaex.open('data_part*.hdf5')
df = vaex.open(['data_2020.hdf5', 'data_2021.hdf5', 'data_2022.hdf5'])
**优势:**
- 瞬间加载(内存映射,无需将数据读入 RAM)
- Vaex 操作的最佳性能
- 支持压缩
- 支持随机访问模式
### Apache Arrow 文件
python
# 打开 Arrow 文件 (瞬间加载,内存映射)
df = vaex.open('data.arrow')
df = vaex.open('data.feather') # Feather 是 Arrow 格式
# 多个 Arrow 文件
df = vaex.open('data_*.arrow')
**优势:**
- 瞬间加载(内存映射)
- 语言无关格式
- 非常适合数据共享
- 与 Arrow 生态系统零拷贝集成
### Parquet 文件
python
# 打开 Parquet 文件
df = vaex.open('data.parquet')
# 多个 Parquet 文件
df = vaex.open('data_*.parquet')
# 从云存储读取
df = vaex.open('s3://bucket/data.parquet')
df = vaex.open('gs://bucket/data.parquet')
**优势:**
- 默认压缩
- 列式格式
- 广泛的生态系统支持
- 适合分布式系统
**注意事项:**
- 对于本地文件,速度慢于 HDF5/Arrow
- 某些操作可能需要读取整个文件
### CSV 文件
python
# 简单 CSV
df = vaex.from_csv('data.csv')
# 带自动分块的大型 CSV
df = vaex.from_csv('large_data.csv', chunk_size=5_000_000)
# 转换为 HDF5 的 CSV
df = vaex.from_csv('large_data.csv', convert='large_data.hdf5')
# 创建 HDF5 文件以便将来快速加载
# 带选项的 CSV
df = vaex.from_csv(
'data.csv',
sep=',',
header=0,
names=['col1', 'col2', 'col3'],
dtype={'col1': 'int64', 'col2': 'float64'},
usecols=['col1', 'col2'], # 仅加载特定列
nro