讀取和寫入 Arrow IPC 格式#
Arrow C++ 為 Arrow IPC 格式提供讀取器和寫入器,它們封裝了較低層級的輸入/輸出,透過 IO 介面 處理。對於讀取,還有一個事件驅動的 API,可以將任意資料非同步地饋送到 IPC 解碼層。
讀取 IPC 串流和檔案#
同步讀取#
在大多數情況下,使用 RecordBatchStreamReader
或 RecordBatchFileReader
類別最為方便,具體取決於您想要讀取的 IPC 格式變體。前者需要 InputStream
來源,而後者需要 RandomAccessFile
。
如果來源允許,讀取 Arrow IPC 資料本質上是零複製的。例如,BufferReader
或 MemoryMappedFile
通常可以是零複製的。例外情況是當資料必須即時轉換時,例如,當在 IPC 串流或檔案上啟用了緩衝區壓縮時。
事件驅動讀取#
當需要非阻擋地處理 IPC 格式時(例如,將 Arrow 與事件迴圈整合),或者當資料來自不尋常的來源時,請使用事件驅動的 StreamDecoder
。您需要定義 Listener
的子類別,並為所需的事件實作虛擬方法(例如,實作 Listener::OnRecordBatchDecoded()
以接收每個傳入的 RecordBatch
的通知)。
寫入 IPC 串流和檔案#
使用工廠函數 MakeStreamWriter()
或 MakeFileWriter()
之一,以取得給定 IPC 格式變體的 RecordBatchWriter
實例。
配置#
可以使用 IpcReadOptions
和 IpcWriteOptions
類別分別配置讀取和寫入 IPC 格式的各個方面。