用例
以下是一些 Apache Arrow 格式和库的应用示例。更多信息,请参阅我们的博客以及使用 Arrow 的项目列表。
读/写列式存储格式
许多 Arrow 库提供便捷的方法来读写列式文件格式,包括 Arrow IPC 文件格式(“Feather”)和 Apache Parquet 格式。
除了单文件读取器之外,一些库(C++,Python,R)支持读取整个文件目录并将它们视为单个数据集。这些数据集可能位于本地文件系统或远程存储系统上,例如 HDFS、S3 等。
本地共享内存
Arrow IPC 文件可以在本地进行内存映射,这允许您处理大于内存的数据并在不同语言和进程之间共享数据。
Arrow 项目包含 Plasma,这是一个用 C++ 编写的并在 Python 中公开的共享内存对象存储。Plasma 将不可变对象保存在共享内存中,以便许多客户端可以跨进程边界高效地访问它们。
Arrow 格式还定义了一个 C 数据接口,它允许在单个进程内进行零拷贝数据共享,而无需任何构建时或链接时依赖项要求。例如,这允许 R 用户使用 reticulate
包访问基于 pyarrow
的项目。
通过网络移动数据
Arrow 格式允许通过网络(或任何类型的流传输)序列化和传输列式数据。Apache Spark 使用 Arrow 作为数据交换格式,PySpark 和 sparklyr 都可以利用 Arrow 在传输数据时显著提高性能。Google BigQuery、TensorFlow、AWS Athena 和其他项目也以类似的方式使用 Arrow。
Arrow 项目还定义了 Flight,这是一个客户端-服务器 RPC 框架,用于构建根据应用程序定义的语义交换数据的丰富服务。
用于分析的内存数据结构
Arrow 格式旨在实现快速计算。一些项目已经开始利用这种设计。在 Apache Arrow 项目中,DataFusion 是一个使用 Rust 构建的基于 Arrow 数据的查询引擎。