跳到内容

RecordBatch 是一个集合,其中包含匹配特定 Schema 的等长数组。它是一个类似表格的数据结构,在语义上是一系列 字段,每个字段都是连续的 Arrow Array

S3 方法和用法

RecordBatch 类似于数据帧,并且许多您期望在 data.frame 上使用的方法都已为 RecordBatch 实现。 这包括 [, [[, $, names, dim, nrow, ncol, headtail。 您还可以使用 as.data.frame() 将数据从 Arrow record batch 中提取到 R 中。 请参见示例。

关于 $ 方法的一个注意事项:由于 RecordBatch 是一个 R6 对象,因此 $ 也用于访问对象的方法(见下文)。 方法优先于表的列。 因此,即使表中存在名为“Slice”的列,batch$Slice 也会返回“Slice”方法函数。

R6 方法

除了更友好的 R 的 S3 方法,RecordBatch 对象还有以下 R6 方法,这些方法映射到底层的 C++ 方法

  • $Equals(other):如果 other 记录批次相等,则返回 TRUE

  • $column(i):按整数位置从批次中提取 Array

  • $column_name(i):按整数位置获取列的名称

  • $names():获取所有列名(由 names(batch) 调用)

  • $nbytes():记录批次元素消耗的总字节数

  • $RenameColumns(value):设置所有列名(由 names(batch) <- value 调用)

  • $GetColumnByName(name):按字符串名称提取 Array

  • $RemoveColumn(i):按整数位置从批次中删除列

  • $SelectColumns(indices):返回一个新的记录批次,其中包含选择的列,以从 0 开始的整数表示。

  • $Slice(offset, length = NULL):创建一个从指示的整数偏移量开始的零拷贝视图,并持续给定的长度,如果 NULL,则持续到表的末尾,这是默认值。

  • $Take(i):返回一个 RecordBatch,其中的行位于整数(R 向量或 Array Array)i 给定的位置。

  • $Filter(i, keep_na = TRUE):返回一个 RecordBatch,其中的行位于逻辑向量(或 Arrow 布尔 Array)iTRUE 的位置。

  • $SortIndices(names, descending = FALSE):返回一个整数行位置的 Array,可用于按第一个命名列按升序或降序重新排列 RecordBatch,并使用其他命名列打破平局。 descending 可以是长度为 1 或与 names 长度相同的逻辑向量。

  • $serialize():返回适合进程间通信的原始向量

  • $cast(target_schema, safe = TRUE, options = cast_options(safe)):更改记录批次的 schema。

还有一些 active bindings

  • $num_columns

  • $num_rows

  • $schema

  • $metadata:将 Schema 的键值元数据作为命名列表返回。 通过分配修改或替换(batch$metadata <- new_metadata)。 所有列表元素都被强制转换为字符串。 有关更多信息,请参见 schema()

  • $columns:返回 Array 的列表