2

Arrow IPC 和 Feather 有什么区别?

官方文档说:

版本 2 (V2),默认版本,在磁盘上完全表示为 Arrow IPC 文件格式。V2 文件支持存储所有 Arrow 数据类型以及使用 LZ4 或 ZSTD 进行压缩。V2 最初是在 Apache Arrow 0.17.0 中提供的。

vaex是 pandas 的替代品,具有两种不同的功能,一种用于 Arrow IPC,另一种用于 Feather。polars是另一个 pandas 替代品,表明 Arrow IPC 和 Feather 是相同的。

4

1 回答 1

4

TL;DR Arrow IPC 文件格式Feather V2没有区别。

由于 Feather 的两个版本以及 Arrow IPC 文件格式与 Arrow IPC 流格式之间存在一些混淆。

对于 Feather 的两个版本,请参阅FAQ 条目

“羽毛”文件格式怎么样?

Feather v1 格式是一个简化的自定义容器,用于在开发 Arrow IPC 文件格式之前将 Arrow 格式的子集写入磁盘。“Feather 版本 2”现在完全是 Arrow IPC 文件格式,我们保留了“Feather”名称和 API 以实现向后兼容性。

所以 IPC == Feather(V2)。有些地方提到Feather mean Feather(V1),它不同于IPC文件格式。但是,这似乎不是问题所在:Polars 和 Vaex 似乎使用 Feather 来表示 Feather(V2)(尽管 Vaex 稍微误导性地说“Feather 完全表示为磁盘上的 Arrow IPC 文件格式,但也支持压缩”)。

Vaex 公开了export_arrowexport_feather。这与 Arrow 的另一点有关,因为它定义了 IPC 流格式和 IPC 文件格式。它们的不同之处在于文件格式有一个魔术字符串(用于文件识别)和一个页脚(用于支持随机访问读取)(文档)。

export_feather始终写入 IPC 文件格式(==FeatherV2),同时export_arrow让您在 IPC 文件格式和 IPC 流格式之间进行选择。看看添加的位置export_feather,我认为混淆可能源于 PyArrow API,这使得如何使用 Feather API 方法(这是一种用户友好的方便)而不是 IPC 文件编写器(这是什么export_arrow用途)启用压缩很明显。但最终,所写的格式是相同的。

于 2021-06-09T20:18:46.753 回答