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