Apache Arrow 概述

Apache Arrow 是一个软件开发平台,用于构建处理和传输大型数据集的高性能应用程序。它旨在提高分析算法的性能和将数据从一个系统或编程语言移动到另一个系统的效率。

Apache Arrow 的一个关键组成部分是其 **内存中列式格式**,这是一种标准化的、与语言无关的规范,用于在内存中表示结构化的、表格状的数据集。这种数据格式具有丰富的类型系统(包括嵌套和用户定义的数据类型),旨在满足分析数据库系统、数据帧库等的需求。

列式格式速度快

Apache Arrow 格式允许计算例程和执行引擎在扫描和迭代大量数据时最大限度地提高效率。特别是,连续的列式布局允许使用现代处理器中包含的最新 SIMD(单指令,多数据)操作进行矢量化。

SIMD
common data layer common data layer

标准化节省成本

如果没有标准的列式数据格式,每个数据库和语言都必须实现自己的内部数据格式。这会产生很多浪费。将数据从一个系统移动到另一个系统涉及代价高昂的序列化和反序列化。此外,常见的算法通常必须为每种数据格式重新编写。

Arrow 的内存中列式数据格式是这些问题的现成解决方案。使用或支持 Arrow 的系统可以在它们之间以几乎为零的成本传输数据。此外,它们不需要为每个其他系统实现自定义连接器。除了这些节省之外,标准化的内存格式还促进了算法库的重用,即使跨语言也是如此。

Arrow 库

Arrow 项目包含库,使您能够在多种语言中使用 Arrow 列式格式中的数据。 C++C#GoJavaJavaScriptJuliaRustSwift 库包含 Arrow 格式的不同实现。这些库经过 集成测试,以确保它们对格式的保真度。此外,用于 C (GLib)MATLABPythonRRuby 的 Arrow 库是在 C++ 库之上构建的。

这些官方库使第三方项目能够使用 Arrow 数据,而无需自己实现 Arrow 列式格式。它们还包含许多软件组件,这些组件有助于与将数据输入和输出远程存储系统以及通过网络接口移动 Arrow 格式的数据相关的系统问题,以及其他 用例