4 个版本

0.2.3 2024年8月14日
0.2.2 2024年7月3日
0.2.1 2024年5月1日
0.1.0 2024年2月6日

#430 in 开发工具

Download history 437/week @ 2024-04-28 199/week @ 2024-05-05 229/week @ 2024-05-12 1152/week @ 2024-05-19 803/week @ 2024-05-26 954/week @ 2024-06-02 608/week @ 2024-06-09 556/week @ 2024-06-16 503/week @ 2024-06-23 520/week @ 2024-06-30 374/week @ 2024-07-07 270/week @ 2024-07-14 343/week @ 2024-07-21 800/week @ 2024-07-28 539/week @ 2024-08-04 625/week @ 2024-08-11

每月下载量 2,320
5 个库中使用(通过 deltalake

Apache-2.0

2MB
40K SLoC

delta-rs logo

Delta Lake 的原生 Rust 库,具有对 Python 的绑定
Python 文档 · Rust 文档 · 报告错误 · 请求功能 · 路线图

Deltalake Crate Deltalake Deltalake #delta-rs in the Delta Lake Slack workspace

Delta Lake 是一个开源的存储格式,它在现有的数据湖之上运行。Delta Lake 与 Apache Spark 等处理引擎兼容,并提供诸如 ACID 事务保证、模式强制和可扩展数据处理等优势。

Delta Lake 项目旨在通过提供面向开发者和集成商的低级别原生 API 以及一个高级操作 API(让您轻松查询、检查和操作 Delta Lake),来解锁尽可能多的用户和项目的 Deltalake 功能。

源代码 下载 安装命令 文档
PyPi Downloads pip install deltalake 文档
Crates.io Downloads cargoadd deltalake 文档

目录

快速入门

deltalake 库旨在采用数据处理中其他库的模板,因此入门应该看起来很熟悉。

from deltalake import DeltaTable, write_deltalake
import pandas as pd

# write some data into a delta table
df = pd.DataFrame({"id": [1, 2], "value": ["foo", "boo"]})
write_deltalake("./data/delta", df)

# Load data from the delta table
dt = DeltaTable("./data/delta")
df2 = dt.to_pandas()

assert df.equals(df2)

也可以使用核心 Rust 库加载相同的表

use deltalake::{open_table, DeltaTableError};

#[tokio::main]
async fn main() -> Result<(), DeltaTableError> {
    // open the table written in python
    let table = open_table("./data/delta").await?;

    // show all active files in the table
    let files: Vec<_> = table.get_file_uris()?.collect();
    println!("{:?}", files);

    Ok(())
}

您还可以在 DockerHubDocker 仓库 尝试 Delta Lake Docker

参与其中

我们鼓励您与我们联系,并致力于提供一个欢迎的社区。

集成

与 delta-rs 互操作的库和框架 - 按字母顺序排列。

功能

以下部分概述了一些核心功能,如支持的 存储后端 和可以对表执行的 操作。Delta 协议中概述的功能实现状态也 跟踪

云集成

存储 Rust Python 注释
本地 done done
S3 - AWS done done 并发写入时需要锁定
S3 - MinIO done done 并发写入时需要锁定
S3 - R2 done done 使用 AmazonS3ConfigKey::CopyIfNotExists 时不需要锁定
Azure Blob done done
Azure ADLS Gen2 done done
Microsoft OneLake done done
Google Cloud Storage done done
HDFS done done

支持的操作

操作 Rust Python 描述
创建 done done 创建新表
读取 done done 从表中读取数据
清理 done done 删除未使用的文件和日志条目
删除 - 分区 done 删除表分区
删除 - 约束 done done 基于约束删除数据
优化 - 压缩 done done 统一数据文件的大小
优化 - Z-order done done 将相似数据放在同一文件中
合并 done done 将目标 Delta 表与源数据合并
FS 检查 done done 从表中删除损坏的文件

协议支持级别

写入器版本 要求 状态
版本 2 仅追加表 done
版本 2 列不变性 done
版本 3 强制 delta.checkpoint.writeStatsAsJson open
版本 3 强制 delta.checkpoint.writeStatsAsStruct open
版本 3 CHECK 约束 semi-done
版本 4 更改数据馈送
版本 4 生成列
版本 5 列映射
版本 6 标识列
版本 7 表功能
读取器版本 要求 状态
版本 2 列映射
版本 3 表功能(需要读取器 V7)

依赖关系

~37–49MB
~1M SLoC