词汇表#

数组 (array)#
向量 (vector)#

一个具有已知长度、所有值都具有相同类型的连续一维值序列。一个数组由零个或多个缓冲区、一个非负长度和一个数据类型组成。数组的缓冲区根据列式格式定义的数据类型进行布局。

数组是连续的,因为遍历数组的值将遍历一组缓冲区,即使数组可能由多个不连续的缓冲区组成,或者可能由本身跨越多个缓冲区的子数组组成。

数组是一维的,因为它们是槽位或单一值的序列,即使对于某些数据类型(如结构体或联合体),一个槽位可能代表多个值。

Arrow 列式格式定义。

缓冲区 (buffer)#

具有给定长度的连续内存区域。缓冲区用于存储数组的数据。

缓冲区可以位于 CPU 内存、文件内存映射、设备(例如 GPU)内存等,尽管并非所有 Arrow 实现都支持所有这些可能性。

规范扩展类型 (canonical extension type)#

一种已被 Arrow 社区标准化的扩展类型,以提高实现之间的互操作性。

另请参阅

规范扩展类型.

子数组 (child array)#
父数组 (parent array)#

嵌套类型的数组中,父数组对应于父类型,子数组对应于子类型。例如,一个 List[Int32] 类型的父数组有一个 Int32 类型的子数组。

子类型 (child type)#
父类型 (parent type)#

嵌套类型中,嵌套类型是父类型,子类型是其参数。例如,在 List[Int32] 中,List 是父类型,Int32 是子类型。

分块数组 (chunked array)#

一个具有已知长度、所有值都具有相同类型的不连续一维值序列。由零个或多个数组组成,即“分块”。

分块数组是不连续的,因为遍历分块数组的值可能需要为不同的索引遍历不同的缓冲区。

不属于列式格式;此术语特定于某些 Arrow 语言实现(主要是 C++ 及其绑定)。

另请参阅

记录批次

复合类型 (complex type)#
嵌套类型 (nested type)#

一种其结构依赖于一个或多个其他子数据类型数据类型。例如,List 是一种具有一个子类型的嵌套类型。

当且仅当它们的子类型也相等时,两个嵌套类型才相等。

数据类型 (data type)#
类型 (type)#

值可以采用的类型,例如 Int8List[Utf8]。数组的类型决定了其值如何根据Arrow 列式格式在内存中布局。

另请参阅

嵌套类型原始类型

字典 (dictionary)#

一个伴随字典编码数组的值数组。

字典编码 (dictionary-encoding)#

一个将其值存储为字典数组的索引,而不是直接存储值的数组。

另请参阅

字典编码布局

扩展类型 (extension type)#
存储类型 (storage type)#

扩展类型是用户定义的数据类型,它向现有数据类型添加了额外的语义。这允许不支持特定扩展类型的实现仍然处理底层数据类型(“存储类型”)。

例如,UUID 可以表示为 16 字节的固定大小二进制类型。

另请参阅

扩展类型

字段 (field)#

模式中的一列。由字段名、数据类型、指示字段是否可为空的标志以及可选的键值元数据组成。

IPC 文件格式 (IPC file format)#
文件格式 (file format)#
随机访问格式 (random-access format)#

IPC 流式传输格式的扩展,可用于将 Arrow 数据序列化到磁盘,然后随机访问单个记录批次并读取回来。

IPC 格式 (IPC format)#

一种关于如何序列化 Arrow 数据的规范,以便可以在进程/机器之间发送或持久化到磁盘。

IPC 消息 (IPC message)#
消息 (message)#

特定内存结构的 IPC 表示,例如记录批次模式。始终是 Flatbuffers 协议文件MessageHeader 的成员之一。

IPC 流式传输格式 (IPC streaming format)#
流式传输格式 (streaming format)#

一种用于流式传输 Arrow 数据或将数据序列化到文件的协议,由IPC 消息流组成。

物理布局 (physical layout)#

关于如何安排内存中值的规范。

另请参阅

物理内存布局

原始类型 (primitive type)#

没有任何子数据类型的数据类型。

另请参阅

数据类型

记录批次 (record batch)#

IPC 格式:数据的基本单元。一个记录批次由一个有序的缓冲区列表组成,对应于一个模式

在某些实现中(主要是 C++ 及其绑定):一个连续二维的数据块。一个记录批次由相同长度的数组的有序集合组成。

与数组类似,记录批次是连续的,因为遍历记录批次的行将遍历一组缓冲区。

模式 (schema)#

一个字段集合,带有可选的元数据,它决定了记录批次等对象的所有数据类型

槽位 (slot)#

数组中的单个逻辑值,即“行”。

表 (table)#

一个不连续二维的数据块,由有序的分块数组集合组成。所有分块数组具有相同的长度,但可能具有不同的类型。不同的列可能以不同的方式分块。

与分块数组类似,表是不连续的,因为遍历表的行可能需要为不同的索引遍历不同的缓冲区。

不属于列式格式;此术语特定于某些 Arrow 语言实现(例如 C++ 及其绑定,以及 Go)。

A graphical representation of an Arrow Table and a Record Batch, with structure as described in text above.

另请参阅

分块数组记录批次