跳到內容

Record batch 是一組等長的陣列集合,與特定的 Schema 相符。它是一種表格狀的資料結構,語義上是 欄位 的序列,每個欄位都是連續的 Arrow Array

S3 方法與用法

Record batch 類似於資料框架 (data-frame),許多您期望在 data.frame 上運作的方法都已為 RecordBatch 實作。這包括 [[[$namesdimnrowncolheadtail。您也可以使用 as.data.frame() 將資料從 Arrow record batch 拉到 R 中。請參閱範例。

關於 $ 方法的注意事項:由於 RecordBatch 是一個 R6 物件,$ 也用於存取物件的方法(見下方)。方法優先於表格的欄位。因此,即使表格中有一個名為 "Slice" 的欄位,batch$Slice 也會傳回 "Slice" 方法函數。

R6 方法

除了更 R 友好的 S3 方法之外,RecordBatch 物件還具有以下 R6 方法,這些方法對應到底層的 C++ 方法

  • $Equals(other):如果 other record batch 相等,則傳回 TRUE

  • $column(i):從 batch 中依整數位置提取 Array

  • $column_name(i):依整數位置取得欄位的名稱

  • $names():取得所有欄位名稱 (由 names(batch) 呼叫)

  • $nbytes():record batch 元素消耗的總位元組數

  • $RenameColumns(value):設定所有欄位名稱 (由 names(batch) <- value 呼叫)

  • $GetColumnByName(name):依字串名稱提取 Array

  • $RemoveColumn(i):依整數位置從 batch 中移除欄位

  • $SelectColumns(indices):傳回一個新的 record batch,其中包含選定的欄位,以 0 為基底的整數表示。

  • $Slice(offset, length = NULL):建立一個從指定的整數 offset 開始的零複製視圖,並持續給定的長度,如果 NULL (預設值) 則到表格的末尾。

  • $Take(i):傳回一個 RecordBatch,其中包含由整數 (R 向量或 Array 陣列) i 給定位置的列。

  • $Filter(i, keep_na = TRUE):傳回一個 RecordBatch,其中包含邏輯向量 (或 Arrow 布林 Array) iTRUE 的位置的列。

  • $SortIndices(names, descending = FALSE):傳回一個整數列位置的 Array,可用於依第一個命名的欄位以升序或降序重新排列 RecordBatch,並使用後續命名的欄位來打破平局。descending 可以是長度為一的邏輯向量,也可以與 names 的長度相同。

  • $serialize():傳回適用於跨程序通訊的原始向量

  • $cast(target_schema, safe = TRUE, options = cast_options(safe)):變更 record batch 的 schema。

還有一些主動綁定 (active bindings)

  • $num_columns

  • $num_rows

  • $schema

  • $metadata:將 Schema 的鍵值 metadata 作為具名列表傳回。透過賦值 (batch$metadata <- new_metadata) 修改或替換。所有列表元素都會被強制轉換為字串。請參閱 schema() 以取得更多資訊。

  • $columns:傳回 Array 的列表