用例

以下是 Apache Arrow 格式和库的一些示例应用程序。欲了解更多信息,请参阅我们的博客Arrow 支持的项目列表。

读/写列式存储格式

许多 Arrow 库提供了读取和写入列式文件格式的便捷方法,包括 Arrow IPC 文件格式(“Feather”)和 Apache Parquet 格式。

除了单文件读取器之外,一些库(C++、PythonR)还支持读取整个文件目录并将它们视为单个数据集。这些数据集可以位于本地文件系统或远程存储系统(如 HDFS、S3 等)上。

本地共享内存

Arrow IPC 文件可以在本地进行内存映射,这使您能够处理大于内存的数据并在语言和进程之间共享数据。

Arrow 项目包括 Plasma,这是一个用 C++ 编写并以 Python 暴露的共享内存对象存储。Plasma 将不可变对象保存在共享内存中,以便跨进程边界的多个客户端可以高效地访问它们。

Arrow 格式还定义了一个C 数据接口,它允许在单个进程内进行零拷贝数据共享,而无需任何编译时或链接时依赖要求。例如,这使得 R 用户可以使用 reticulate 包访问基于 pyarrow 的项目

通过网络传输数据

Arrow 格式允许在网络或其他任何流式传输上序列化和传输列式数据。 Apache Spark 使用 Arrow 作为数据交换格式,PySparksparklyr 都可以利用 Arrow 在数据传输中获得显著的性能提升。Google BigQueryTensorFlowAWS Athena其他也以类似方式使用 Arrow。

Arrow 项目还定义了 Flight,这是一个客户端-服务器 RPC 框架,用于构建根据应用程序定义语义交换数据的丰富服务。

用于分析的内存中数据结构

Arrow 格式旨在实现快速计算。一些项目已经开始利用这种设计。在 Apache Arrow 项目中,DataFusion 是一个使用 Rust 中 Arrow 数据构建的查询引擎。