适用于 Python 开发人员的 Azure Databricks

本部分提供了使用 Python 语言在 Azure Databricks 中开发笔记本和作业的指南,包括常见工作流和任务的教程,以及 API、库和工具的链接。

开始操作:

教程

以下教程提供示例代码和笔记本来了解常见工作流。 有关将笔记本示例导入工作区的说明,请参阅导入笔记本

数据工程

数据科学和机器学习

在 Python 笔记本中调试

示例笔记本演示如何在 Databricks 笔记本中使用 Python 调试程序 (pdb)。 若要使用 Python 调试程序,必须运行 Databricks Runtime 11.3 LTS 或更高版本。

有了 Databricks Runtime 12.2 LTS 及更高版本,你就可以使用变量资源管理器在笔记本 UI 中跟踪 Python 变量的当前值。 可以使用变量资源管理器在单步执行断点时观察 Python 变量的值。

Python 调试程序示例笔记本

获取笔记本

注意

breakpoint()在 IPython 中不受支持,因此在 Databricks 笔记本中不起作用。 可以使用 import pdb; pdb.set_trace() 而非 breakpoint()

Python API

在 Databricks 外部运行的 Python 代码通常可在 Databricks 中运行,反之亦然。 如果已有代码,只需将其导入 Databricks 即可开始使用。 有关详细信息,请参阅下面的使用笔记本和 Databricks Git 文件夹管理代码

Databricks 可以运行单台计算机和分布式 Python 工作负载。 对于单台计算机计算,可以像往常一样使用 Python API 和库;例如,pandas 和 scikit-learn 将“正常工作”。 对于分布式 Python 工作负载,Databricks 提供两个开箱即用的常用 API:Spark 上的 PySpark 和 Pandas API。

PySpark API

PySpark 是 Apache Spark 的官方 Python API,其中结合了 Python 和 Apache Spark 的强大功能。 PySpark 比 Spark 上的 Pandas API 更灵活,并为 Spark SQL、结构化流式处理、MLLib 和 GraphX 等数据科学与工程功能提供广泛的支持和功能。

Spark 上的 Pandas API

注意

Koalas 开放源代码项目现在建议切换到 Spark 上的 Pandas API。 Spark 上的 Pandas API 在运行 Databricks Runtime 10.0 (EoS) 及更高版本的群集上可用。 对于运行 Databricks Runtime 9.1 LTS 及更低版本的群集,请改用 Koalas

pandas 是数据科学家通常用于数据分析和操作的 Python 包。 但是,Pandas 不会横向扩展到大数据。 Spark 上的 Pandas API 可提供在 Apache Spark 上运行的、与 Pandas 等效的 API,从而填补这一空白。 该开放源代码 API 是熟悉 pandas 但不熟悉 Apache Spark 的数据科学家的理想选择。

使用笔记本和 Databricks Git 文件夹管理代码

Databricks 笔记本支持 Python。 这些笔记本提供了类似于 Jupyter 的功能,但增加了诸如使用大数据的内置可视化,用于调试和性能监视的 Apache Spark 集成以及用于跟踪机器学习实验的 MLflow 集成等功能。 通过导入笔记本开始。 拥有对群集的访问权限后,可以将笔记本附加到群集并运行笔记本

提示

若要完全重置笔记本的状态,重启 iPython 内核可能很有用。 对于 Jupyter 用户,Jupyter 中的“重启内核”选项对应于在 Databricks 中拆离并重新附加笔记本。 要重启 Python 笔记本中的内核,请点击笔记本工具栏中的“计算选择器”,然后将鼠标悬停在列表中已附加的群集或 SQL 仓库上,以显示侧菜单。 选择“拆离并重新附加”。 这会从群集中拆离笔记本并重新附加它,从而重启 Python 进程。

通过 Databricks Git 文件夹,用户可以将笔记本和其他文件与 Git 存储库同步。 Databricks Git 文件夹有助于代码版本控制与协作,并且可以简化将完整的代码存储库导入 Azure Databricks、查看过去的笔记本版本以及与 IDE 开发集成的操作。 通过克隆远程 Git 存储库开始。 然后,可以使用存储库克隆打开或创建笔记本,将笔记本附加到群集,并运行笔记本

群集和库

Azure Databricks 计算可为任何大小的群集提供计算管理:从单节点群集到大型群集。 可以根据需求自定义群集硬件和库。 数据科学家通常通过创建群集或使用现有的共享群集来开始工作。 拥有对群集的访问权限后,可以向群集附加笔记本或在群集上运行作业。

  • 对于只需要单节点的小型工作负载,数据科学家可以使用单节点计算来节省成本。
  • 有关详细提示,请参阅计算配置建议
  • 管理员可以设置群集策略,以简化和引导群集创建。

Azure Databricks 群集使用 Databricks Runtime,它提供了许多开箱即用的常用库,包括 Apache Spark、Delta Lake、pandas 等。 你还可以安装其他第三方的或自定义的 Python 库,用于笔记本和作业。

可视化效果

Azure Databricks Python 笔记本具有针对多种类型的可视化效果的内置支持。 还可以使用旧版可视化效果

你也可以使用第三方库可视化数据;有些库已预安装在 Databricks Runtime 中,但你也可以安装自定义库。 常用选项包括:

作业

可以在 Databricks 中按计划或触发作业自动执行 Python 工作负载。 作业可以运行笔记本、Python 脚本和 Python wheel 文件。

提示

若要计划 Python 脚本而不是笔记本,请使用创建作业请求正文中 tasks 下的 spark_python_task 字段。

机器学习

Databricks 支持各种机器学习 (ML) 工作负载,包括表格数据的传统 ML、用于计算机视觉和自然语言处理的深度学习、推荐系统、图形分析等。 有关 Databricks 上机器学习的常规信息,请参阅 Databricks 上的 AI 和机器学习

对于 ML 算法,可以使用用于机器学习的 Databricks Runtime(其中包括 scikit-learn、TensorFlow、Keras、PyTorch、Apache Spark MLlib 和 XGBoost 等常用的 Python 工具)中预安装的库。 还可以安装自定义库

对于机器学习操作 (MLOps),Azure Databricks 为开放源代码库 MLflow 提供托管服务。 使用 MLflow 跟踪,你可以记录模型开发并以可重用格式保存模型。 你可以使用 MLflow 模型注册表来管理模型并将其自动提升到生产。 使用作业模型服务可以成批托管模型,并将作业作为 REST 终结点进行流式处理。 有关详细信息和示例,请参阅使用 MLflowMLflow Python API 文档的 ML 生命周期管理

若要开始使用常见的机器学习工作负载,请参阅以下页面:

IDE、开发人员工具和 SDK

除了在 Azure Databricks 笔记本中开发 Python 代码之外,还可以使用集成开发环境 (IDE)(如 PyCharm、Jupyter 和 Visual Studio Code)在外部进行开发。 若要在外部开发环境和 Databricks 之间同步工作,有几种选项:

  • 代码:可以使用 Git 同步代码。 请参阅 Databricks Git 文件夹的 Git 集成
  • 库和作业:可以在外部创建库(如 Python Wheel 文件),并将其上传到 Databricks。 这些库可以在 Databricks 笔记本中导入,或者可用于创建作业。 请参阅计划和协调工作流
  • 远程计算机执行:可以从本地 IDE 运行代码,以便进行交互式开发和测试。 IDE 可以与 Azure Databricks 通信,以在 Azure Databricks 群集上执行 Apache Spark 和大型计算。 请参阅 Databricks Connect

Databricks 提供一组 SDK,包括 Python SDK,支持自动化并与外部工具集成。 可以使用 Databricks SDK 来管理群集和库、代码和其他工作区对象、工作负载和作业等资源。 请参阅 Databricks SDK

有关 IDE、开发人员工具和 SDK 的详细信息,请参阅开发人员工具

其他资源