arrow系列12---arrow的组成部分(High-Level Overview)
作者:yunjinqi   类别:    日期:2023-10-15 19:43:05    阅读:507 次   消耗积分:0 分    


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存储桶。


版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/345
上一篇:arrow系列11---datasets小例子的运行
下一篇:arrow系列13---内存管理(Memory Management)