对比
Arrow IPC 与 Parquet
Arrow IPC 和 Parquet 都处理列式数据,但 Arrow IPC 主要用于程序间快速交换,Parquet 则面向分析数据的存储和读取。
应该选择哪种格式?
在兼容的语言和分析引擎之间传递数据时选择 Arrow IPC。对于数据湖以及需要高效读取指定列或行组的工作负载,可考虑 Parquet。
适用于 Apache Arrow IPC
在兼容的程序和语言之间交换列式表格数据 · 在支持 Arrow 的工具之间传递分析数据集
- 在 Arrow 库和分析引擎之间移动带类型的数据
- 在 IPC 文件版中随机访问记录批次
适用于 Parquet
为分析保存结构化表格
- 只需读取部分列的大型数据集
基本信息
| 项目 | Apache Arrow IPC | Parquet |
|---|---|---|
| 扩展名 | .arrow, .feather, .arrows | .parquet |
| MIME 类型 | application/vnd.apache.arrow.file, application/vnd.apache.arrow.stream | application/vnd.apache.parquet |
| 常见用途 | 在兼容的程序和语言之间交换列式表格数据 · 在支持 Arrow 的工具之间传递分析数据集 | 为分析保存结构化表格 |
| 打开方式 | 使用 Apache Arrow 库或支持 Arrow IPC 的分析工具读取。.arrow 通常表示文件版,.arrows 通常表示流版,但应确认接收工具所需的 IPC 模式和压缩编解码器。处理 Feather 文件时,也要确认其与旧版 Feather V1 的兼容性。 | 使用支持 Parquet 的工具检查模式、列类型、行数和值。 |
| 导出或转换 | Parquet 可用于分析数据存储和分发;CSV 适用于简单表格交换。转换可能改变或丢失 Arrow 专有类型、嵌套结构、字典编码或压缩设置。请确认所需类型和精度,并保留源数据。 | 从 CSV 等格式转换时,检查类型、空值、时间戳、编码、分区和行数。 |
按用途选择
在 Arrow 库和分析引擎之间移动带类型的数据
在兼容的程序和语言之间交换列式表格数据 · 在支持 Arrow 的工具之间传递分析数据集
Apache Arrow IPC在 IPC 文件版中随机访问记录批次
在兼容的程序和语言之间交换列式表格数据 · 在支持 Arrow 的工具之间传递分析数据集
Apache Arrow IPC只需读取部分列的大型数据集
为分析保存结构化表格
Parquet关键点 1
Arrow IPC 将 Arrow 类型和记录批次序列化为文件或流;文件版可通过页脚元数据随机访问。
进一步了解差异关键点 2
Parquet 将存储数据组织为行组、列块和页面,并结合编码与压缩以提高存储和读取效率。
进一步了解差异进一步了解差异
当应用间传输需要利用 Arrow 类型系统和交换库时使用 Arrow IPC。对于持久化分析数据集,若读取端需要选择列和行组,可使用 Parquet。在确定工作流前,请用实际读写工具测试所需类型和精度。
- Arrow IPC 通常将内存数据序列化以便交换;Parquet 是用于持久保存的列式文件格式。
- Arrow IPC 文件页脚索引记录批次;Parquet 元数据索引行组和列块。
- 两者都可以压缩数据,但支持的方式不同,读取器也可能支持不同功能。应使用实际数据流水线中的工具验证互操作性。
常见问题
Parquet 能替代 Arrow IPC 吗?
有时可以,但两者解决的问题不同。兼容库可以将 Parquet 读入 Arrow 表,而 Arrow IPC 适合直接交换 Arrow 数据。应根据存储、传输和读取端需求来选择。