Apache Arrow 概述
Apache Arrow 是一个软件开发平台,用于构建处理和传输大型数据集的高性能应用程序。它的设计目标是提高分析算法的性能和将数据从一个系统或编程语言移动到另一个系统的效率。
Apache Arrow 的一个关键组件是它的**内存列式格式**,这是一种标准化的、与语言无关的规范,用于在内存中表示结构化的、类似表格的数据集。这种数据格式具有丰富的数据类型系统(包括嵌套和用户定义的数据类型),旨在支持分析数据库系统、数据框库等的需求。
列式存储速度快
Apache Arrow 格式允许计算例程和执行引擎在扫描和迭代大块数据时最大限度地提高效率。特别是,连续的列式布局可以使用现代处理器中包含的最新 SIMD(单指令多数据)操作进行向量化。



标准化节省成本
如果没有标准的列式数据格式,每个数据库和语言都必须实现自己的内部数据格式。这会造成大量的浪费。将数据从一个系统移动到另一个系统涉及代价高昂的序列化和反序列化。此外,通常必须为每种数据格式重写通用算法。
Arrow 的内存列式数据格式是解决这些问题的现成方案。使用或支持 Arrow 的系统可以几乎零成本地在它们之间传输数据。此外,它们不需要为每个其他系统实现自定义连接器。除了这些节省之外,标准化的内存格式还有助于算法库的重用,即使跨语言也是如此。
Arrow 库
Arrow 项目包含的库使您能够使用多种语言处理 Arrow 列式格式的数据。C++、C#、Go、Java、JavaScript、Julia、Rust 和 Swift 库包含 Arrow 格式的不同实现。这些库经过相互集成测试,以确保它们对格式的保真度。此外,用于 C (GLib)、MATLAB、Python、R 和 Ruby 的 Arrow 库构建在 C++ 库之上。
这些官方库使第三方项目能够使用 Arrow 数据,而无需自己实现 Arrow 列式格式。它们还包含许多软件组件,可帮助解决与将数据传入和传出远程存储系统以及通过网络接口移动 Arrow 格式的数据相关的系统问题,以及其他用例。