问题描述
我正在尝试将二进制 Arrow 文件读入 Rust,但出现错误 IoError("Failed to fill whole buffer")
。我正在使用 Arrow 3。我知道可以使用 ipc::reader::FileReader
,但在我的应用程序中,我实际上已经在内存中存储了数据。
use arrow::ipc;
use std::fs;
fn main() {
println!("Length: {}",try_main().unwrap());
}
fn try_main() -> std::io::Result<usize> {
let data = fs::read("flights-10k.arrow")?;
println!("Size of the data: {}",data.len());
let reader = ipc::reader::StreamReader::try_new(&data as &[u8]).unwrap();
return Ok(reader.schema().fields().len());
}
在我的货物文件中
[dependencies]
arrow = "3.0.0"
解决方法
添加光标似乎可以让我改用文件阅读器。
let cursor = Cursor::new(&data as &[u8]);
let reader = ipc::reader::FileReader::try_new(cursor).unwrap();