4个版本

新版本 0.1.4 2024年8月14日
0.1.2 2024年6月14日
0.1.1 2024年5月1日
0.1.0 2024年2月6日

#1 in #delta-lake

Download history 752/week @ 2024-04-24 662/week @ 2024-05-01 497/week @ 2024-05-08 828/week @ 2024-05-15 1302/week @ 2024-05-22 867/week @ 2024-05-29 1256/week @ 2024-06-05 1432/week @ 2024-06-12 1413/week @ 2024-06-19 34992/week @ 2024-06-26 77344/week @ 2024-07-03 82308/week @ 2024-07-10 74465/week @ 2024-07-17 82287/week @ 2024-07-24 84115/week @ 2024-07-31 63927/week @ 2024-08-07

321,820 每月下载量
6 个crate中使用(通过 deltalake

Apache-2.0

2MB
41K 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,以及允许轻松查询、检查和操作Delta Lake的高级操作API,让尽可能多的用户和项目能够释放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)

依赖关系

~70MB
~1.5M SLoC