可以在首选集成开发环境(IDE)中创作Python管道源代码,在本地运行它进行测试,然后在Azure Databricks工作区中验证、部署和运行更新,而无需离开本地环境。
Lakeflow 管道是 Apache Spark™ 声明性管道的超集。 仅使用 Apache Spark 声明性管道 API 的代码在本地和Azure Databricks上运行,但使用 Lakeflow 管道特有的功能(如AUTO CDC和预期)的代码仅在Azure Databricks上运行。 有关功能差异,请参阅 Lakeflow 管道 Python 语言参考。
若要在Azure Databricks工作区中进行交互式开发和测试,请使用 Lakeflow 管道编辑器。 请参阅 使用 Lakeflow 管道编辑器开发和调试 ETL 管道。
使用 IDE 支持编写管道代码
使用 pyspark.pipelines 模块编写管道代码,导入为 dp:
from pyspark import pipelines as dp
由于模块是 Apache Spark 的一部分,因此 IDE 会在编写时提供语法检查、自动完成和类型检查。 Apache Spark 声明性管道代码通常在Azure Databricks上运行,而无需修改。 在 Lakeflow 管道中运行相同的导入命令会导入Azure Databricks版本pipelines。 有关完整的 Lakeflow 管道Python参考,请参阅 Lakeflow 管道Python语言参考。
在本地运行管道以进行测试
你还可以在本地运行管道,以便在 Azure Databricks 上运行代码之前对其进行开发和测试。
spark-pipelines使用命令行接口通过本地 Apache Spark 初始化、验证和运行管道。 请参阅 Apache Spark 文档中的 Spark 声明性管道编程指南 。
不能在本地运行或测试特定于 Lakeflow 管道的功能。 这包括期望和 AUTO CDC 函数。
从本地环境在 Azure Databricks 中运行管道
databricks pipelines使用命令组直接从终端验证、部署和运行工作区中的管道更新:
databricks pipelines init # scaffold a pipeline project
databricks pipelines dry-run # validate the pipeline graph without publishing data
databricks pipelines deploy # deploy the project to your workspace
databricks pipelines run # run an update
管道更新使用为管道配置的计算在Azure Databricks工作区中运行,而不是在本地计算机上运行。 这些命令与声明性自动化捆绑包 bundle 命令可互操作,因此你可以从一个简单的项目开始,并在其增长时采用捆绑配置和 CI/CD 做法。 若要安装和配置 CLI,请参阅 安装或更新 Databricks CLI。 有关完整的命令参考,请参阅 pipelines 命令组。 有关分步指南,请参阅 使用声明性自动化捆绑包开发管道。
将管道代码从 IDE 同步到工作区
下表汇总了在本地 IDE 与Azure Databricks工作区之间同步管道源代码的选项:
| 工具或模式 | 详细信息 |
|---|---|
Databricks CLI (pipelines 命令组) |
databricks pipelines使用命令从本地环境部署和运行管道项目。 请参阅 pipelines 命令组。 |
| 声明式自动化包 | 使用声明性自动化捆绑包来部署管道资产,其复杂性范围包括从单个源代码文件到多个管道、作业和源代码文件的配置。 请参阅 将管道转换为捆绑项目。 |
| 用于 Visual Studio Code 的 Databricks 扩展 | Azure Databricks 提供与 Visual Studio Code 的集成,实现了本地 IDE 与工作区文件之间的轻松同步。 此扩展还提供用于使用声明性自动化捆绑包部署管道资产的工具。 请参阅 Visual Studio Code 的 Databricks 扩展。 |
| 工作区文件 | 可以使用 Databricks 工作区文件将管道源代码上传到 Databricks 工作区,然后将该代码导入管道。 请参阅什么是工作区文件?。 |
| Git 文件夹 | Git 文件夹允许在本地环境和Azure Databricks工作区之间使用 Git 存储库作为中介同步代码。 请参阅 Azure Databricks Git 文件夹。 |