5个版本

新增 0.1.4 2024年8月14日
0.1.3 2024年7月3日
0.1.2 2024年5月1日
0.1.1 2024年5月1日
0.1.0 2024年2月6日

#delta-lake中排名3

Download history 738/week @ 2024-04-24 544/week @ 2024-05-01 394/week @ 2024-05-08 477/week @ 2024-05-15 772/week @ 2024-05-22 688/week @ 2024-05-29 967/week @ 2024-06-05 722/week @ 2024-06-12 666/week @ 2024-06-19 530/week @ 2024-06-26 979/week @ 2024-07-03 536/week @ 2024-07-10 544/week @ 2024-07-17 769/week @ 2024-07-24 1034/week @ 2024-07-31 632/week @ 2024-08-07

每月下载量3,078
4个crate中使用(通过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 crate加载相同的表

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(())
}

您还可以在DockerHub | Docker仓库上尝试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-顺序 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)

依赖关系

~36–49MB
~1M SLoC