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