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>を取り出す。