数据
什么是 Apache Arrow 文件?
Apache Arrow 提供列式数据格式及相关库;Arrow IPC 将这些数据序列化,以便进程和应用程序之间交换。文件版通常使用 .arrow 扩展名,并可借助页脚随机访问记录批次。流版通常使用 .arrows,按顺序传递消息。Feather V2 是基于 Arrow IPC 文件格式的一种称呼。
.arrow · .feather · .arrows进程间列式数据交换
适合选择此格式的场景
- 在 Arrow 库和分析引擎之间移动带类型的数据
- 在 IPC 文件版中随机访问记录批次
不宜选择此格式的场景
- 在普通电子表格程序中直接编辑
- 不检查 IPC 模式和压缩支持就跨工具打开
常见用途
- 在兼容的程序和语言之间交换列式表格数据
- 在支持 Arrow 的工具之间传递分析数据集
特点
- 以二进制形式序列化列式架构、类型和记录批次
- 文件版通过页脚偏移量随机访问记录批次
- 流版按顺序发送架构和记录批次等消息
- 数据缓冲区可以不压缩,也可以使用 LZ4 或 Zstandard 压缩
优点和缺点
优点
- 可在多种语言和分析库之间交换列式数据
- 兼容实现可以保留类型信息和嵌套结构
- 文件版便于直接访问选定的记录批次
缺点
- 二进制内容不像 CSV 或 JSON 那样可直接阅读
- 不同工具和库版本对 Arrow IPC 及压缩方式的支持可能不同
- 它与 Parquet 等存储格式的用途不同
打开和转换
如何打开
使用 Apache Arrow 库或支持 Arrow IPC 的分析工具读取。.arrow 通常表示文件版,.arrows 通常表示流版,但应确认接收工具所需的 IPC 模式和压缩编解码器。处理 Feather 文件时,也要确认其与旧版 Feather V1 的兼容性。
如何转换
Parquet 可用于分析数据存储和分发;CSV 适用于简单表格交换。转换可能改变或丢失 Arrow 专有类型、嵌套结构、字典编码或压缩设置。请确认所需类型和精度,并保留源数据。
注意事项
- Arrow IPC 不提供机密性或完整性保护。敏感数据应通过有访问控制的渠道传输。
- 请使用可信且更新的 Arrow 实现验证来源不明的二进制文件,避免使用不安全的读取器。
- 文件版和流版不能互换;编解码器支持差异也可能导致文件无法读取。
常见问题
Arrow IPC 与 Parquet 有什么区别?
Arrow IPC 用于在程序之间交换列式数据;Parquet 是面向分析存储的列式文件格式。应根据系统环境以及交换还是保存数据的目的来选择。
Feather 和 .arrow 是同一种格式吗?
Feather V2 基于 Arrow IPC 文件格式,可使用 .feather 或 .arrow 扩展名。较旧的 Feather V1 兼容性不同,请确认版本。