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 格式数据相关的系统问题,以及其他 应用场景。