首页 > 解决方案 > 在 Rust 中读取 Apache Arrow IPC 文件时出现 IoError(“无法填充整个缓冲区”)

问题描述

我正在尝试将二进制箭头文件读入 Rust,但出现错误IoError("failed to fill whole buffer")。我正在使用箭头 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"

标签: rustapache-arrow

解决方案


添加光标似乎允许我使用文件阅读器。

let cursor = Cursor::new(&data as &[u8]);
let reader = ipc::reader::FileReader::try_new(cursor).unwrap();

推荐阅读