跳到主要内容

LakeSoul Python SDK

lakesoul 是 LakeSoul 的 Python SDK。它用统一的 Catalog API 管理表元数据和 IO,并将同一个 LakeSoul 扫描计划转换为 PyArrow、Pandas、DuckDB、PyTorch、Hugging Face Datasets、Ray Data 或 Daft 对象。

Python SDK 适合以下场景:

  • 查询、创建、加载或删除 LakeSoul 表;
  • 通过分区裁剪、列裁剪和过滤条件惰性读取表;
  • 写入 PyArrow 数据,并将生成的文件提交到 LakeSoul 元数据;
  • 将已经配置好的扫描计划交给支持的数据处理或机器学习框架。

环境要求与安装

当前 Python 包要求 Python 3.10 或更高版本。

安装核心 SDK:

pip install lakesoul

按需安装生态适配器:

pip install 'lakesoul[pandas]'
pip install 'lakesoul[duckdb]'
pip install 'lakesoul[torch]'
pip install 'lakesoul[datasets]'
pip install 'lakesoul[ray]'
pip install 'lakesoul[daft]'

安装全部可选集成:

pip install 'lakesoul[all]'

配置元数据连接

先按照本地环境搭建启动 LakeSoul 环境,再配置元数据连接:

export LAKESOUL_PG_URL='jdbc:postgresql://localhost:5432/lakesoul_test?stringtype=unspecified'
export LAKESOUL_PG_USERNAME='lakesoul_test'
export LAKESOUL_PG_PASSWORD='lakesoul_test'

LakeSoulCatalog.from_env() 会读取这些变量:

from lakesoul import LakeSoulCatalog

catalog = LakeSoulCatalog.from_env()
print(catalog.list_namespaces())
print(catalog.list_tables())

也可以显式传入 PostgreSQL 配置:

from lakesoul import LakeSoulCatalog

catalog = LakeSoulCatalog(
pg_url="postgresql://localhost:5432/lakesoul_test",
pg_username="lakesoul_test",
pg_password="lakesoul_test",
namespace="default",
)

生产环境不要在源码中写入凭据,应使用环境变量或部署平台的密钥管理机制。

SDK 对象模型

公共 API 由三个主要对象组成:

  • LakeSoulCatalog:元数据连接,以及 namespace 和表的入口;
  • LakeSoulTable:已经加载的表,包含 schema、分区信息和写入操作;
  • LakeSoulScan:不可变、惰性的读取配置,可继续组合并转换为各生态对象。
LakeSoulCatalog
| table("events") / scan("events")
v
LakeSoulTable ---- write_arrow / write_ray / write_daft
|
| scan(partitions=..., columns=..., filter=...)
v
LakeSoulScan
|-- to_arrow_dataset / to_arrow_table / to_batches
|-- to_torch / to_huggingface
|-- to_ray
`-- to_daft

接下来先阅读核心 Catalog 与表 IO,再选择应用所需的生态集成:

Spark SQL 和 DataFrame 的使用方式请参考独立的 Spark 配置Spark API文档。

更多可运行示例位于 python/examples