#delta-lake #数据加工 #delta #deltalake #数据湖

deltalake-hdfs

Rust 语言实现的本地 Delta Lake

2 个不稳定版本

新版本 0.2.0 2024 年 8 月 14 日
0.1.0 2024 年 6 月 24 日

#6 in #delta-lake


deltalake 中使用

Apache-2.0

2MB
39K 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 的力量,该高级操作 API 可让您轻松查询、检查和操作 Delta Lake。

源代码 下载 安装命令 文档
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 表与源数据合并
文件系统检查 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)

依赖关系

~38–52MB
~1M SLoC