FileWriter構造体を使って、ArrowのRecordBatchをファイルに出力することが出来る。
RecordBatchをファイルに出力する例。
use std::fs::File; use arrow::{ array::RecordBatch, error::ArrowError, ipc::writer::FileWriter, };
fn write_file(batch: &RecordBatch) -> Result<(), ArrowError> { let file = File::create("example.arrow").unwrap(); let mut writer = FileWriter::try_new(file, &batch.schema())?; writer.write(batch)?; writer.finish()?; Ok(()) }
RecordBatchのバイト列を出力する例。
use std::io::Cursor;
fn write_bytes(batch: &RecordBatch) -> Result<Vec<u8>, ArrowError> { let mut cursor = Cursor::new(Vec::new()); let mut writer = FileWriter::try_new(&mut cursor, &batch.schema())?; writer.write(batch)?; writer.finish()?; let bytes = cursor.into_inner(); // println!("bytes={:?}", bytes); Ok(bytes) }
Fileの代わりにCursor<Vec<u8>>に出力し、そこからVec<u8>を取り出す。