高階概述#
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 儲存桶)讀取和寫入資料。