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