高階概述#

Arrow C++ 函式庫由不同的部分組成,每個部分都有其特定的用途。

實體層#

記憶體管理抽象化提供了一個統一的 API,用於管理可能通過各種方式分配的記憶體,例如堆積分配、檔案的記憶體映射或靜態記憶體區域。特別是,buffer 抽象化表示物理資料的連續區域。

一維層#

資料類型管理物理資料的邏輯解釋。Arrow 中的許多操作都通過資料類型在編譯時或運行時進行參數化。

陣列將一個或多個 buffer 與資料類型組裝在一起,允許將它們視為值的邏輯連續序列(可能是巢狀的)。

分塊陣列是陣列的概括,包含多個相同類型的陣列,形成更長的邏輯值序列。

二維層#

Schema 描述了多個資料片段的邏輯集合,每個資料片段都有不同的名稱和類型,以及可選的中繼資料。

表格是根據 schema 的分塊陣列的集合。它們是 Arrow 中功能最強大的資料集提供抽象化。

Record batch 是連續陣列的集合,由 schema 描述。它們允許表格的增量建構或序列化。

計算層#

Datum 是彈性的資料集參考,例如能夠保存陣列或表格參考。

Kernel 是專門的計算函式,在迴圈中針對給定的一組 datum 運行,這些 datum 代表函式的輸入和輸出參數。

Acero(發音為 [aˈsɜɹo] / ah-SERR-oh)是一個串流執行引擎,允許將計算表示為運算符圖,該運算符圖可以轉換資料流。

IO 層#

串流允許對各種外部資料(例如壓縮或記憶體映射)進行非類型化的循序或可搜尋存取。

跨進程通訊 (IPC) 層#

訊息格式允許在進程之間交換 Arrow 資料,並儘可能減少複製。

檔案格式層#

可以從/向各種檔案格式讀取和寫入 Arrow 資料,例如 Parquet、CSV、Orc 或 Arrow 特有的 Feather 格式。

裝置層#

提供了基本的 CUDA 整合,允許描述由 GPU 分配的記憶體支援的 Arrow 資料。

檔案系統層#

檔案系統抽象化允許從不同的儲存後端(例如本機檔案系統或 S3 儲存桶)讀取和寫入資料。