ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

dlt Playground 目的地:在 dltHub 平台上零配置运行与验证数据管道的完整实践

dlt Playground 目的地:在 dltHub 平台上零配置运行与验证数据管道的完整实践 dlt Playground 目的地在 dltHub 平台上零配置运行与验证数据管道的完整实践【免费下载链接】dltdata load tool (dlt) is an open source Python library that makes data loading easy ️项目地址: https://gitcode.com/GitHub_Trending/dl/dlt本文基于 dlt 仓库中的 Playground 目的地文档 展开讲解 dltHub 平台提供的零配置playground目的地它是什么、与本地临时存储型目的地如duckdb的本质区别、完整的使用步骤管道代码、__deployment__.py清单、部署与运行命令以及其底层基于 filesystem/Delta 目的地的实现机制。读完本文你可以在不配置任何存储桶、凭据或bucket_url的情况下将管道数据持久化到平台托管的 Delta 表中并通过平台 dashboard 直接查询。Playground 目的地是什么Playground是由 dltHub 平台托管的零配置目的地。当你在平台上运行管道时只要指定destinationplayground就不需要配置任何自己的凭据或存储——平台会为每个 workspace 自动供给隔离的存储并将你的数据以Delta 表的形式写入一个平台托管的 S3 桶中。从源码结构看destinationplayground并不是在 dlt 核心库中注册的目的地名称而是 dltHub 平台侧约定的目的地平台在部署运行时将其映射到基于 filesystem 目的地的 Delta 写出逻辑存储位置由平台按 workspace 自动分配。这意味着本地 dlt 库源码中不会出现名为playground的目的地实现它属于 dltHub 平台能力 的一部分。几个关键特性零配置不需要bucket_url、不需要任何凭据、不需要其他任何配置项。数据持久化运行结束后数据保留在平台管理的存储中可以随时在平台 UI 中查询这与写入 dltHub 临时存储运行结束后即被擦除的本地型目的地形成对比。workspace 级隔离每个 workspace 拥有独立的存储前缀形如s3://.../org_id/workspace_id/...不同 workspace 的数据永远不会混在一起。行为对齐 Delta 目的地存储与 write disposition 的行为完全遵循 Delta 目的地 的语义详见工作原理一节。注意dltHub 平台及其工具包的使用受商业性质的 dltHub License 约束。Playground 定位为演示与快速上手不用于生产环境也不要将敏感或机密数据加载进 Playground。生产负载应使用你自己拥有并控制的目的地例如 Delta、Iceberg、Snowflake Plus 或任意 dlt 支持的目的地。为什么需要它与本地型目的地的本质区别在平台上运行管道时如果选用duckdb这类本地风格的目的地数据会被写入 dltHub 的临时存储ephemeral storage——运行结束后即被擦除事后无法再探索数据。Playground 的区别正在于持久化运行完成后你可以直接通过平台 UI 查询落下的数据。因此它的典型用途是在 dltHub 平台上完成不配置存储桶与凭据的快速首次运行运行示例与演示examples / demos。它通常与平台自动创建的 Playground workspace 配套使用创建账号时平台会自动为你建一个个人、单成员的 Playground workspaceuvx dlthub-start会将本地项目连接到该 workspace 并提供一个加载到 Playground 目的地的示例管道完整流程见 部署你的第一个管道。前置条件使用 Playground 目的地需要满足三个前提拥有一个 dltHub workspace。如果还没有可以用uvx dlthub-startlatest搭建参见 部署你的第一个管道。已登录并连接到某个 workspaceuv run dlthub login uv run dlthub workspace connect workspace-name项目中已安装deltalake包。Playground 写的是 Delta 表而平台的运行时会安装你项目的依赖所以必须把deltalake加进pyproject.tomluv add deltalake从源码结构可以补充一个容易踩坑的点run.pipeline等部署装饰器来自dlt.hub而 dlt/hub/init.py 在dlthub插件包缺失时会抛出MissingDependencyException并提示需要安装dlt[hub]扩展。也就是说除了deltalake项目还需要带上dlt[hub]依赖才能使用平台部署相关功能。完整使用步骤整个使用流程分四步写管道 → 声明 job → 部署 workspace → 在平台运行。第 1 步在管道代码中指定destinationplayground在data_pipeline.py中将管道函数用run.pipeline装饰使其成为平台可发现、可部署的 jobimport dlt from dlt.hub import run run.pipeline(pipeline) def load_data(): pipeline dlt.pipeline( pipeline_namepipeline, destinationplayground, dataset_namedata, ) pipeline.run([{id: 1}], table_nameitems)这段代码中有几个细节值得展开结合 dlt/hub/run.py 与 dlt/_workspace/deployment/decorators.py 的源码from dlt.hub import run导入的run模块实际上聚合了三个部署装饰器job、pipeline、interactivepipeline是 decorators.py 中pipeline_run函数的别名。run.pipeline(pipeline)的参数是管道名。源码中pipeline_run会把它固化进 job 定义deliver: TDeliverSpec {pipeline_name: pipeline_name}decorators.py#L627同时给 job 打上categorypipeline的 UI 分类标记。这使得平台能在 UI 中将该 job 与指定管道关联获得管道感知的能力如数据集联动。destinationplayground即全部配置——不需要bucket_url、不需要凭据、不需要任何其他配置项。第 2 步在__deployment__.py中声明 job让平台能够发现这个 job需要在部署清单模块中导入并声明它from data_pipeline import load_data __all__ [load_data]__deployment__.py是 manifest 模块dlthub deploy会读取其中的__all__把每个 job 的入口点、触发器、执行约束等元数据由JobFactory.to_job_definition()从装饰器元数据构建同步为部署清单。关于__deployment__.py、run.pipeline以及平台部署的更多细节参见 Deployments。第 3 步部署 workspace 并在平台运行uv run dlthub deploy uv run dlthub pipeline run pipeline -fdlthub deploy将整个 workspace 的 job 图同步到平台dlthub pipeline run pipeline触发名为pipeline的 job 在平台上运行-f表示在前台持续跟随follow输出。运行结束后数据即持久化在平台管理的 S3 存储中等待查询。查询与探索数据运行完成后打开平台 dashboard 探索持久化的数据它内置一个针对你的数据集的 SQL 查询编辑器uv run dlthub dashboard这里有一个值得区分的细节来自原文档的注释说明平台 dashboard 本身也是一个已部署的 job它在你带着__deployment__.py清单执行dlthub deploy时被供给出来而本地dashboarduv run dlthub local show则不需要任何部署清单即可启动。本地 dashboard 是基于 marimo 构建的 Web 应用可查看管道元数据、查询目的地数据、审查运行 trace 与增量状态等详见 Pipeline and dataset troubleshooting。工作原理底层机制Playground 的行为与 Delta 目的地 完全一致它是一个写入平台托管 S3 桶的filesystem 目的地落盘格式为 Delta 表。因此 Delta 目的地的所有行为语义在 Playground 上原样生效主要包括1. Write disposition 语义与 Delta 目的地文档一致append—— 文件追加到数据集目录replace—— 删除该表原有文件后写入当前文件集merge—— 可配合upsert与insert-only合并策略使用。如需使用merge可以在 resource 或pipeline.run级别声明pipeline.run(write_disposition{disposition: merge, strategy: upsert})2. 表格式与分区Delta 目的地会自动为所有资源分配delta表格式并支持在 resource 级别指定分区列提示如columns{_dlt_load_id: {partition: True}}。注意分区演化表创建后变更分区列目前不受支持。3. 存储选项底层最终将配置传递给deltalake库的write_deltalake方法因此deltalake_configuration与deltalake_storage_options等 filesystem 目的地配置项同样适用于 Delta 写出参见 delta.md 的 Storage options and configuration 一节。4. 表访问辅助函数可以使用get_delta_tables获取原生DeltaTable对象并执行优化操作该函数定义于 dlt/common/libs/deltalake.py#L161from dlt.common.libs.deltalake import get_delta_tables delta_tables get_delta_tables(pipeline) delta_tables[my_delta_table].optimize.compact() delta_tables[another_delta_table].optimize.z_order([col_a, col_b])正因为行为与 Delta 目的地对齐在 Playground 上原型验证过的负载可以近乎无改动地迁移到生产由于 dlt 是目的地无关destination-agnostic的你只需替换destination参数、换成自己的存储与凭据即可例如换成自己的 Delta 或 Iceberg 目的地在config.toml/secrets.toml中配置bucket_url与凭据。适用范围与限制小结维度说明定位演示、示例、平台快速首次运行非生产用途配置零配置无bucket_url、无凭据、无其他配置项存储平台托管 S3 桶按 workspace 前缀隔离s3://.../org_id/workspace_id/...数据格式Delta 表行为对齐 Delta 目的地依赖项目需安装deltalakeuv add deltalake部署功能需dlt[hub]扩展账号要求dltHub 商业 License 约束需登录并连接 workspace数据安全禁止加载敏感或机密数据持久性运行后数据保留于托管存储可在平台 dashboard 用 SQL 查询相关资源原始文档Playground 目的地配套 workspace 概念The Playground workspace部署机制Deployments上手流程Deploy your first pipeline底层目的地文档Destination: Delta本地排查工具Pipeline and dataset troubleshooting源码入口dlt/hub/run.py、dlt/_workspace/deployment/decorators.py、dlt/common/libs/deltalake.py【免费下载链接】dltdata load tool (dlt) is an open source Python library that makes data loading easy ️项目地址: https://gitcode.com/GitHub_Trending/dl/dlt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表