本文目录导读:

是的,Python 支持 Delta Lake 格式,Delta Lake 是一个开源存储层,它提供了 ACID 事务、时间旅行等特性,并且可以很好地与 Python 数据生态(如 Pandas、PySpark)集成。
主要支持方式有:
使用 PySpark 操作 Delta Lake
最成熟的方式是通过 PySpark 的 Delta Lake 支持:
# 安装:pip install pyspark delta-spark
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("DeltaLakeExample") \
.config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
.config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") \
.getOrCreate()
# 读取 Delta 表
df = spark.read.format("delta").load("/path/to/delta-table")
# 写入 Delta 表
df.write.format("delta").mode("overwrite").save("/path/to/delta-table")
# 更新数据
from delta.tables import DeltaTable
deltaTable = DeltaTable.forPath(spark, "/path/to/delta-table")
deltaTable.update(
condition = "column1 = 'value'",
set = { "column2": "new_value" }
)
使用 Delta Lake Rust 库(更快,无 Java 依赖)
# 安装:pip install deltalake
import pandas as pd
from deltalake import DeltaTable, write_deltalake
# 读取 Delta 表
dt = DeltaTable("/path/to/delta-table")
df = dt.to_pandas()
# 写入数据
df = pd.DataFrame({"col1": [1, 2, 3], "col2": ["a", "b", "c"]})
write_deltalake("/path/to/delta-table", df, mode="overwrite")
# 时间旅行查询
dt = DeltaTable("/path/to/delta-table", version=1)
使用 Polars (直接支持 Delta Lake)
# 安装:pip install polars
import polars as pl
# 读取 Delta 表
df = pl.read_delta("/path/to/delta-table")
# 写入 Delta 表
df.write_delta("/path/to/delta-table")
主要特性
- ✅ ACID 事务:保证数据一致性
- ✅ 时间旅行:可以访问历史版本数据
- ✅ Schema 演进:自动适应 Schema 变化
- ✅ 高效读写:支持列式存储和压缩
推荐使用场景
- 数据湖架构
- 需要事务支持的数据管线的中间存储
- 需要历史版本回溯的场景
建议:如果只是简单读/写 Delta 表,推荐使用 deltalake 库(轻量、无 Java 依赖);如果需要复杂的 ETL 操作和更新/删除/合并操作,使用 PySpark 版本更为成熟。