词汇表#
- 数组#
- 向量#
一个连续的、一维的具有已知长度的值序列,其中所有值具有相同的类型。数组由零个或多个缓冲区、一个非负长度和一个数据类型组成。数组的缓冲区根据列式格式定义的数据类型进行排列。
数组是连续的,因为迭代数组的值将迭代单个缓冲区集,即使数组可能包含多个不相交的缓冲区,或者可能包含跨越多个缓冲区的子数组。
数组是一维的,因为它们是槽或单个值的序列,即使对于某些数据类型(如结构体或联合体),一个槽可能表示多个值。
由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)。