术语表#
- 数组#
- 向量#
一个连续、一维的值序列,具有已知长度,其中所有值都具有相同的类型。一个数组由零个或多个缓冲区、一个非负长度和一个数据类型组成。数组的缓冲区根据列式格式定义的数据类型进行布局。
数组是连续的,这意味着迭代数组的值将迭代单个缓冲区集,即使数组可能包含多个不相交的缓冲区,或者可能包含其自身跨越多个缓冲区的子数组。
数组是一维的,因为它们是槽或单个值的序列,即使对于某些数据类型(如结构体或联合体),一个槽可能代表多个值。
由Arrow 列式格式定义。
- 缓冲区#
具有给定长度的连续内存区域。缓冲区用于存储数组的数据。
缓冲区可能位于 CPU 内存中,从文件内存映射,位于设备(例如 GPU)内存中,等等,尽管并非所有 Arrow 实现都支持所有这些可能性。
- 规范扩展类型#
已被 Arrow 社区标准化的扩展类型,以提高实现之间的互操作性。
另请参阅
- 子数组#
- 父数组#
在嵌套类型的数组中,父数组对应于父类型,子数组对应于子类型。例如,一个`List[Int32]`类型的父数组有一个`Int32`类型的子数组。
- 子类型#
- 父类型#
在嵌套类型中,嵌套类型是父类型,子类型是其参数。例如,在`List[Int32]`中,`List`是父类型,`Int32`是子类型。
- 分块数组#
一个*非连续*、*一维*的值序列,具有已知长度,其中所有值都具有相同的类型。由零个或多个数组组成,即“块”。
分块数组是不连续的,这意味着迭代分块数组的值可能需要为不同的索引迭代不同的缓冲区。
不属于列式格式;此术语特定于 Arrow 的某些语言实现(主要是 C++ 及其绑定)。
- 复杂类型#
- 嵌套类型#
其结构依赖于一个或多个其他子数据类型的数据类型。例如,`List`是一个具有一个子类型的嵌套类型。
当且仅当它们的子类型也相等时,两个嵌套类型才相等。
- 数据类型#
- 类型#
值可以采用的类型,例如`Int8`或`List[Utf8]`。数组的类型决定了它的值如何根据Arrow 列式格式在内存中布局。
- 字典#
伴随字典编码数组的值数组。
- 字典编码#
将值存储为字典数组中的索引而不是直接存储值的数组。
另请参阅
- 扩展类型#
- 存储类型#
扩展类型是用户定义的数据类型,它向现有数据类型添加了额外的语义。这允许不支持特定扩展类型的实现仍然能够处理底层数据类型(“存储类型”)。
例如,UUID 可以表示为 16 字节的固定大小二进制类型。
另请参阅
- 字段#
- IPC 文件格式#
- 文件格式#
- 随机访问格式#
IPC 流格式的扩展,可用于将 Arrow 数据序列化到磁盘,然后随机访问单个记录批读取它。
- IPC 格式#
关于如何序列化 Arrow 数据的规范,以便它可以在进程/机器之间发送,或持久化到磁盘上。
- IPC 消息#
- 消息#
特定内存结构(如记录批或模式)的 IPC 表示形式。始终是Flatbuffers 协议文件中`MessageHeader`的成员之一。
- IPC 流格式#
- 流格式#
用于流式传输 Arrow 数据或将数据序列化到文件的协议,由IPC 消息流组成。
- 物理布局#
关于如何在内存中排列值的规范。
另请参阅
- 基本类型#
没有子类型的数据类型。
另请参阅
- 记录批#
**在**IPC 格式**中**:数据的基本单元。记录批由对应于模式的有序缓冲区列表组成。
**在某些实现中**(主要是 C++ 及其绑定):*连续*、*二维*的数据块。记录批由长度相同的数组的有序集合组成。
与数组一样,记录批是连续的,这意味着迭代记录批的行将迭代单个缓冲区集。
- 模式#
- 槽#
数组中的单个逻辑值,即“行”。
- 表#
一个非连续、二维的数据块,由有序的分块数组集合组成。所有分块数组长度相同,但类型可能不同。不同的列可能以不同的方式分块。
与分块数组一样,表格也是非连续的,这意味着迭代表格的行可能需要针对不同的索引迭代不同的缓冲区。
不属于列式格式;此术语特定于 Arrow 的某些语言实现(例如 C++ 及其绑定,以及 Go)。