Format Atlas

对比

Arrow 与 ORC

Apache Arrow 是面向分析和数据交换的语言无关内存列式表示。ORC 是列式文件格式,将行组织为 stripe,并保存列数据、索引和统计信息以支持分析读取。

应该选择哪种格式?

进程或系统间需要高效地在内存传递表格数据时选 Arrow。持久化数据湖或 Hive 工作流需要压缩、列选择和 stripe 读取时考虑 ORC。不要把 Arrow 内存布局与 Arrow IPC 文件混为一谈。

适用于 Apache Arrow IPC

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

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

适用于 ORC

为分析存储大型结构化表格

  • 读取所选列并利用索引的查询

基本信息

项目Apache Arrow IPCORC
扩展名.arrow, .feather, .arrows.orc
MIME 类型application/vnd.apache.arrow.file, application/vnd.apache.arrow.streamapplication/vnd.apache.orc
常见用途在兼容的程序和语言之间交换列式表格数据 · 在支持 Arrow 的工具之间传递分析数据集为分析存储大型结构化表格
打开方式使用 Apache Arrow 库或支持 Arrow IPC 的分析工具读取。.arrow 通常表示文件版,.arrows 通常表示流版,但应确认接收工具所需的 IPC 模式和压缩编解码器。处理 Feather 文件时,也要确认其与旧版 Feather V1 的兼容性。使用支持 ORC 的工具检查模式、列、行数、压缩和示例值。
导出或转换Parquet 可用于分析数据存储和分发;CSV 适用于简单表格交换。转换可能改变或丢失 Arrow 专有类型、嵌套结构、字典编码或压缩设置。请确认所需类型和精度,并保留源数据。转换为 Parquet 或 CSV 时,检查类型、空值、时间戳、小数、分区和行数。

按用途选择

在 Arrow 库和分析引擎之间移动带类型的数据

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

Apache Arrow IPC

在 IPC 文件版中随机访问记录批次

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

Apache Arrow IPC

读取所选列并利用索引的查询

为分析存储大型结构化表格

ORC

关键点 1

Arrow 规范内存中的数组、缓冲区和类型,可支持零拷贝共享等方式;ORC 文件使用列流、stripe、索引和页脚统计信息。

进一步了解差异

关键点 2

Arrow 侧重内存表示与传输;ORC 面向压缩持久存储和选择性分析读取。

进一步了解差异

进一步了解差异

内存分析和互操作传输可用 Arrow。存储与查询生态支持 ORC 文件布局并受益于列裁剪和索引时选择 ORC。用实际工作负载测试。

  • Arrow 定义内存中的列式数组与缓冲区;Arrow IPC/文件格式会序列化该表示,而 ORC 定义独立的磁盘结构、stripe 和列流。
  • ORC 可使用压缩、列投影及 stripe/行索引减少查询读取量。Arrow 主要规范内存格式,并非所有持久表格式的替代品。
  • 检查读写器支持,以及类型、空值、时间戳和小数的映射。使用目标 codec、引擎和查询比较文件大小与性能。

常见问题

Arrow 表文件和 ORC 是同一种格式吗?

不是。Arrow 定义内存列式格式及单独的 IPC 格式;ORC 是独立的列式文件格式。

了解详情

参考资料与规范