讀取和寫入 Arrow IPC 格式#

Arrow C++ 為 Arrow IPC 格式提供讀取器和寫入器,它們封裝了較低層級的輸入/輸出,透過 IO 介面 處理。對於讀取,還有一個事件驅動的 API,可以將任意資料非同步地饋送到 IPC 解碼層。

讀取 IPC 串流和檔案#

同步讀取#

在大多數情況下,使用 RecordBatchStreamReaderRecordBatchFileReader 類別最為方便,具體取決於您想要讀取的 IPC 格式變體。前者需要 InputStream 來源,而後者需要 RandomAccessFile

如果來源允許,讀取 Arrow IPC 資料本質上是零複製的。例如,BufferReaderMemoryMappedFile 通常可以是零複製的。例外情況是當資料必須即時轉換時,例如,當在 IPC 串流或檔案上啟用了緩衝區壓縮時。

事件驅動讀取#

當需要非阻擋地處理 IPC 格式時(例如,將 Arrow 與事件迴圈整合),或者當資料來自不尋常的來源時,請使用事件驅動的 StreamDecoder。您需要定義 Listener 的子類別,並為所需的事件實作虛擬方法(例如,實作 Listener::OnRecordBatchDecoded() 以接收每個傳入的 RecordBatch 的通知)。

寫入 IPC 串流和檔案#

使用工廠函數 MakeStreamWriter()MakeFileWriter() 之一,以取得給定 IPC 格式變體的 RecordBatchWriter 實例。

配置#

可以使用 IpcReadOptionsIpcWriteOptions 類別分別配置讀取和寫入 IPC 格式的各個方面。