Apache Arrow笔记
以下的内容是基于Apache Arrow官方网站上概述页面的翻译,并包含了一些我个人理解的自由改编、省略和补充。
这些图像都是从上述的引用中获取的。
Apache Arrow 的概述
Apache Arrow是一个用于构建处理和传输大规模数据集的高性能应用程序的软件开发平台。
Apache Arrow的设计目标是提高分析算法的性能,以及从一个系统或编程语言移动数据到另一个系统或编程语言的效率。
Apache Arrow的一个重要组件是内存中的列格式。
Apache Arrow是为了表示内存中的结构化表格类数据集而设计和实现的一种与语言无关的标准规范。
该数据格式包含了丰富的数据类型系统,旨在支持分析数据库系统和数据框架库等需求(包括嵌套数据类型和用户定义的数据类型)。
为提高执行效率选择列式数据类型。
使用Apache Arrow格式可以最大程度地提高计算程序和执行引擎在扫描和迭代大型数据块时的效率。特别是通过连续的列式布局,可以利用包含在最新处理器中的最新SIMD(单指令多数据)操作实现向量化。
标准化带来的保护
如果没有标准的列式数据格式,所有的数据库和语言都必须实现自己独特的内部数据格式,这将导致大量废弃物产生。要将数据从一个系统移动到另一个系统,需要付出高昂的序列化和反序列化成本。此外,经常需要为每种数据格式重写通用算法。
箭头内存列指向数据格式是针对这些问题的即可使用解决方案。使用或支持箭头的系统可以在系统之间轻松传输数据而几乎不需要成本。此外,无需为所有其他系统实施定制连接器。除了这些节省外,通过标准化的内存格式,算法库的跨语言重用也变得更加容易。
阿罗图书馆
Arrow项目包括许多可以操作Arrow列格式数据的库,支持多种语言。C++、C#、Go、Java、JavaScript、Julia和Rust库包含了针对Arrow格式的独立实现。此外,为C(Glib)、MATLAB、Python、R和Ruby准备的Arrow库是基于C++库构建的。