是否可以直接从内存中加载 Parquet 数据?

Is it possible to load Parquet data directly from memory?

我有一个用例,我会将 Parquet 数据直接下载到内存中(而不是 到文件系统中)。是否可以从 Vec<u8> 将这些文件作为(惰性)数据帧加载?而不是传递路径?

是的,您可以:

use polars::prelude::*;
use std::io::Cursor;

fn main() -> Result<()> {
    let mut df = df![
        "a" => [1, 2, 3]
    ]?;

    // write to buffer
    let mut buf = vec![];
    ParquetWriter::new(&mut buf).finish(&mut df)?;

    // read from buffer
    let reader = Cursor::new(&buf);
    let result = ParquetReader::new(reader).finish()?;

    // validate result
    df.frame_equal(&result);
    Ok(())
}