高级概述#
Arrow C++ 库由不同的部分组成,每个部分都服务于特定的目的。
物理层#
内存管理抽象提供了一个统一的 API,用于访问可能通过各种方式分配的内存,例如堆分配、文件的内存映射或静态内存区域。特别是,缓冲区抽象表示一个连续的物理数据区域。
一维层#
数据类型控制物理数据的逻辑解释。Arrow 中的许多操作在编译时或运行时都由数据类型参数化。
数组将一个或多个缓冲区与数据类型组合在一起,允许将其视为值的逻辑连续序列(可能嵌套)。
分段数组是数组的泛化,将多个相同类型的数组组合成更长的逻辑值序列。
二维层#
模式描述了几个数据片段的逻辑集合,每个片段都有一个不同的名称和类型,以及可选的元数据。
表是根据模式收集分段数组。它们是 Arrow 中功能最强大的数据集提供抽象。
记录批次是连续数组的集合,由模式描述。它们允许增量构建或序列化表。
计算层#
数据是灵活的数据集引用,能够容纳例如数组或表引用。
内核是在给定数据集上循环运行的专门计算函数,这些数据集表示函数的输入和输出参数。
Acero(发音为 [aˈsɜɹo] / ah-SERR-oh)是一个流式执行引擎,它允许将计算表示为运算符图,这些运算符可以转换数据流。
IO 层#
流允许对各种外部数据(例如压缩数据或内存映射数据)进行无类型顺序或可寻址访问。
进程间通信 (IPC) 层#
消息格式允许在进程之间交换 Arrow 数据,并尽可能减少复制次数。
文件格式层#
可以从/向各种文件格式读取和写入 Arrow 数据,例如Parquet、CSV、Orc或特定于 Arrow 的Feather格式。
设备层#
提供了基本的CUDA集成,允许描述由 GPU 分配的内存支持的 Arrow 数据。
文件系统层#
文件系统抽象允许从不同的存储后端读取和写入数据,例如本地文件系统或 S3 存储桶。