3 个版本

0.1.0 2024 年 7 月 15 日
0.1.0-rc.22024 年 7 月 12 日
0.1.0-rc.12024 年 7 月 11 日
0.1.0-alpha2 2024 年 7 月 10 日

#489HTTP 服务器

Download history 54/week @ 2024-07-04 376/week @ 2024-07-11 15/week @ 2024-07-18 26/week @ 2024-07-25 8/week @ 2024-08-01

51 每月下载量

Apache-2.0

110KB
2K SLoC

Hudi logo

Apache Hudi 的本地 Rust 库,具有 Python 绑定

hudi-rs ci hudi-rs codecov join hudi slack follow hudi x/twitter follow hudi linkedin

hudi-rs 项目旨在扩大 Apache Hudi 在各种用户和项目中的使用。

源代码 安装命令
PyPi pip install hudi
Crates.io cargoadd hudi

示例用法

Python

将 Hudi 表读入 PyArrow 表。

from hudi import HudiTable

hudi_table = HudiTable("/tmp/trips_table")
records = hudi_table.read_snapshot()

import pyarrow as pa
import pyarrow.compute as pc

arrow_table = pa.Table.from_batches(records)
result = arrow_table.select(
    ["rider", "ts", "fare"]).filter(
    pc.field("fare") > 20.0)
print(result)

Rust

将带有 `datafusion` 功能的 crate `hudi` 添加到您的应用程序中,以查询 Hudi 表。
[dependencies]
hudi = { version = "0" , features = ["datafusion"] }
tokio = "1"
datafusion = "39.0.0"
use std::sync::Arc;

use datafusion::error::Result;
use datafusion::prelude::{DataFrame, SessionContext};
use hudi::HudiDataSource;

#[tokio::main]
async fn main() -> Result<()> {
    let ctx = SessionContext::new();
    let hudi = HudiDataSource::new("/tmp/trips_table").await?;
    ctx.register_table("trips_table", Arc::new(hudi))?;
    let df: DataFrame = ctx.sql("SELECT * from trips_table where fare > 20.0").await?;
    df.show().await?;
    Ok(())
}

与云存储一起工作

确保云存储凭证已正确设置为环境变量,例如 AWS_*AZURE_*GOOGLE_*。然后,将选择相关的存储环境变量。目标表的基 URI 将根据 s3://az://gs:// 等方案进行处理。

贡献

查看 贡献指南 以获取有关向项目贡献的所有详细信息。

依赖项

~36–54MB
~1M SLoC