Format Atlas

对比

Arrow IPC 与 Parquet

Arrow IPC 和 Parquet 都处理列式数据,但 Arrow IPC 主要用于程序间快速交换,Parquet 则面向分析数据的存储和读取。

应该选择哪种格式?

在兼容的语言和分析引擎之间传递数据时选择 Arrow IPC。对于数据湖以及需要高效读取指定列或行组的工作负载,可考虑 Parquet。

适用于 Apache Arrow IPC

在兼容的程序和语言之间交换列式表格数据 · 在支持 Arrow 的工具之间传递分析数据集

  • 在 Arrow 库和分析引擎之间移动带类型的数据
  • 在 IPC 文件版中随机访问记录批次

适用于 Parquet

为分析保存结构化表格

  • 只需读取部分列的大型数据集

基本信息

项目Apache Arrow IPCParquet
扩展名.arrow, .feather, .arrows.parquet
MIME 类型application/vnd.apache.arrow.file, application/vnd.apache.arrow.streamapplication/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 数据。应根据存储、传输和读取端需求来选择。

了解详情

参考资料与规范