高级概述#

Arrow C++ 库由不同的部分组成,每个部分都有特定的用途。

物理层#

内存管理抽象提供了统一的 API,用于管理可通过各种方式分配的内存,例如堆分配、文件内存映射或静态内存区域。特别是,缓冲区抽象表示物理数据的连续区域。

一维层#

数据类型决定了物理数据的逻辑解释。Arrow 中的许多操作在编译时或运行时通过数据类型进行参数化。

数组将一个或多个缓冲区与数据类型组合在一起,允许将其视为值的逻辑连续序列(可能嵌套)。

分块数组是数组的推广,它将几个相同类型的数组组合成更长的值的逻辑序列。

二维层#

模式描述了一个逻辑数据集合,其中每个数据都具有不同的名称、类型和可选的元数据。

是符合模式的分块数组集合。它们是 Arrow 中功能最强大的数据集提供抽象。

记录批次是连续数组的集合,由模式描述。它们允许表的增量构建或序列化。

计算层#

数据项是灵活的数据集引用,能够例如保存数组或表引用。

内核是专门的计算函数,在一个给定的一组数据项(表示函数的输入和输出参数)上循环运行。

Acero(发音为 [aˈsɜɹo] / ah-SERR-oh)是一个流式执行引擎,它允许将计算表示为运算符图,这些运算符可以转换数据流。

IO 层#

允许对各种外部数据(例如压缩或内存映射数据)进行无类型顺序或可查找访问。

进程间通信 (IPC) 层#

消息格式允许在进程之间交换 Arrow 数据,并尽可能少地进行复制。

文件格式层#

可以从/向各种文件格式读取和写入 Arrow 数据,例如 ParquetCSVOrc 或 Arrow 特定的 Feather 格式。

设备层#

提供了基本的 CUDA 集成,允许描述由 GPU 分配内存支持的 Arrow 数据。

文件系统层#

文件系统抽象允许从不同的存储后端读取和写入数据,例如本地文件系统或 S3 存储桶。