用例
以下是 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 数据的查询引擎。