arrow系列21---读写Arrow IPC格式
作者:yunjinqi   类别:    日期:2023-10-16 20:34:29    阅读:445 次   消耗积分:0 分    


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格式的读取和写入的各个方面。


版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/354
上一篇:arrow系列20---输入/输出和文件系统
下一篇:arrow系列22---读写ORC文件