Apache Arrow 是通用的列式格式和多语言工具集,用于快速数据交换和内存分析。它包含了一套技术,使数据系统能够高效地存储、处理和移动数据。
该项目的主要组成部分包括:
- Arrow 列式格式:各种数据类型(扁平或嵌套)的标准高效内存表示
- Arrow IPC 格式:Arrow 格式和相关元数据的有效序列化,用于进程间通信和异构环境
- ADBC (Arrow 数据库连接性)
↗:基于 Arrow 的 API、驱动程序和库,用于访问数据库和查询引擎 - Arrow Flight RPC 协议:基于 Arrow IPC 格式,是远程服务交换具有应用程序定义语义的 Arrow 数据(例如存储服务器或数据库)的构建块
- C++ 库
- 使用 GLib 的 C 绑定
- .NET 库
- Gandiva:基于 LLVM 的 Arrow 表达式编译器,是 C++ 代码库的一部分
- Go 库
↗ - Java 库
↗ - JavaScript 库
↗ - Julia 实现
↗ - Python 库
- R 库
- Ruby 库
- Rust 库
↗ - Swift 库
↗
↗ 图标表示该项目的部分组件在单独的存储库中维护。
Arrow 是 Apache 软件基金会 的项目。更多信息请访问 arrow.apache.org。
参考 Arrow 库包含许多不同的软件组件:
- 支持扁平或嵌套类型的列式向量和类似表容器(类似于数据帧)
- 快速、与语言无关的元数据消息传递层(使用 Google 的 FlatBuffers 库)
- 引用计数的堆外缓冲区内存管理,用于零拷贝内存共享和处理内存映射文件
- 到本地和远程文件系统的 IO 接口
- 用于远程过程调用 (RPC) 和进程间通信 (IPC) 的自描述二进制线格式(流式和批/文件类)
- 用于验证实现之间二进制兼容性的集成测试(例如,将数据从 Java 发送到 C++)
- 与其他内存中数据结构的相互转换
- 用于各种常用文件格式(如 Parquet、CSV)的读取器和写入器
此存储库中的官方 Arrow 库在实现 Arrow 格式和相关功能方面处于不同阶段。请参阅我们在 git main 上的当前 功能矩阵。
请阅读我们最新的 项目贡献指南。
即使您不打算为 Apache Arrow 本身或 Arrow 在其他项目中的集成做出贡献,我们也欢迎您参与进来:
- 加入邮件列表:发送邮件至 dev-subscribe@arrow.apache.org。分享您对该项目的想法和用例。
- 在 GitHub issues 上关注我们的动态
- 了解格式
- 为参考实现之一贡献代码