Apache Arrow 概述
Apache Arrow 是一个软件开发平台,用于构建能够处理和传输大型数据集的高性能应用程序。它的设计目标是提高分析算法的性能和提高数据在不同系统或编程语言之间传输的效率。
Apache Arrow 的一个关键组成部分是其内存列式格式,这是一种标准化的、与编程语言无关的规范,用于在内存中表示结构化的、类似表格的数据集。该数据格式拥有丰富的数据类型系统(包括嵌套和用户定义的数据类型),旨在支持分析数据库系统、数据框架库等的需求。
列式速度快
Apache Arrow 格式允许计算例程和执行引擎在扫描和迭代大块数据时最大程度地提高效率。特别是,连续的列式布局使得可以使用现代处理器中包含的最新SIMD(单指令,多数据)操作来实现矢量化。
标准化节省开销
没有标准的列式数据格式,每个数据库和编程语言都必须实现自己的内部数据格式。这会产生很多浪费。将数据从一个系统移动到另一个系统涉及昂贵的序列化和反序列化操作。此外,通用算法通常必须为每种数据格式重新编写。
Arrow 的内存列式数据格式是这些问题的开箱即用解决方案。使用或支持 Arrow 的系统可以以几乎零成本将数据传输到它们之间。此外,它们不需要为每个其他系统实现自定义连接器。除了这些节省外,标准化的内存格式促进了算法库的重用,即使跨多种编程语言也可以使用。
Arrow 库
Arrow 项目包含允许您在许多编程语言中使用 Arrow 列式格式处理数据的库。C++、C#、Go、Java、JavaScript、Julia 和 Rust 库包含了 Arrow 格式的不同实现。这些库经过互相集成测试,以确保它们对格式的忠实性。此外,针对C (Glib)、MATLAB、Python、R 和 Ruby的 Arrow 库是构建在C++库的基础上。
这些官方库使第三方项目能够在不必自己实现 Arrow 列式格式的情况下处理 Arrow 数据。它们还包含许多软件组件,有助于解决与将数据存储到远程存储系统、在网络接口上传输 Arrow 格式数据等相关的系统问题,以及其他用例。