适用于 Python 开发人员的 Azure Databricks
本部分提供了使用 Python 语言在 Azure Databricks 中开发笔记本和作业的指南,包括常见工作流和任务的教程,以及 API、库和工具的链接。
开始操作:
- 导入代码:从文件或 Git 存储库导入自己的代码,或者尝试下面列出的教程。 Databricks 建议使用交互式 Databricks 笔记本进行学习。
- 在群集上运行代码:创建自己的群集,或确保你有权使用共享群集。 将笔记本附加到群集,并运行笔记本。
- 然后,可以:
- 使用 Apache Spark 处理较大数据集
- 添加可视化效果
- 将工作负载自动化为作业
- 使用机器学习分析数据
- 使用 IDE 进行开发
教程
以下教程提供示例代码和笔记本来了解常见工作流。 有关将笔记本示例导入工作区的说明,请参阅导入笔记本。
数据工程
- 教程:使用 Apache Spark 数据帧加载和转换数据提供了一个演练,以帮助你了解用于数据准备和分析的 Apache Spark 数据帧。
- 教程:Delta Lake。
- 教程:运行第一个 Delta Live Tables 管道。
数据科学和机器学习
- 用于数据准备和分析的 Apache Spark 数据帧入门:教程:使用 Apache Spark 数据帧加载和转换数据
- 教程:Azure Databricks 上的端到端 ML 模型。 如需其他示例,请参阅教程:开始使用 AI 和机器学习和 MLflow 指南的 Python 快速入门。
- 借助 AutoML ,可以快速开始在自己的数据集上开发机器学习模型。 其玻璃盒方法可生成具有完整机器学习工作流的笔记本,你可以克隆、修改和重新运行该工作流。
- 在 Unity Catalog 中管理模型生命周期
- 教程:Azure Databricks 上的端到端 ML 模型
在 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 库,用于笔记本和作业。
- 从 Databricks Runtime 发行说明版本和兼容性中的默认库开始。 将用于机器学习的 Databricks Runtime 用于机器学习工作负载。 有关预安装的库的完整列表,请参阅 Databricks Runtime 发行说明版本和兼容性。
- 使用笔记本范围的 Python 库自定义环境,这些库使你能够使用 PyPI 或其他存储库中的库修改笔记本或作业环境。
%pip install my_library
magic 命令会将my_library
安装到当前附加的群集中的所有节点,但不会干扰共享群集上的其他工作负载。 - 根据需要将非 Python 库安装为群集库。
- 有关详细信息,请参阅库。
可视化效果
Azure Databricks Python 笔记本具有针对多种类型的可视化效果的内置支持。 还可以使用旧版可视化效果。
你也可以使用第三方库可视化数据;有些库已预安装在 Databricks Runtime 中,但你也可以安装自定义库。 常用选项包括:
作业
可以在 Databricks 中按计划或触发作业自动执行 Python 工作负载。 作业可以运行笔记本、Python 脚本和 Python wheel 文件。
- 使用 Databricks UI 或 Databricks REST API 创建和更新作业。
- Databricks Python SDK 允许以编程方式创建、编辑和删除作业。
- Databricks CLI 提供了一个方便的命令行接口用于自动处理作业。
提示
若要计划 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 终结点进行流式处理。 有关详细信息和示例,请参阅使用 MLflow 或 MLflow Python API 文档的 ML 生命周期管理。
若要开始使用常见的机器学习工作负载,请参阅以下页面:
- 使用 MLflow 训练 scikit-learn 和跟踪:10 分钟教程:Databricks 上使用 scikit-learn 的机器学习
- 训练深度学习模型:深度学习
- 超参数优化:并行化 Hyperopt 超参数优化
- 图形分析:如何在 Azure Databricks 上使用 GraphFrames
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 的详细信息,请参阅开发人员工具。
其他资源
Databricks Academy 提供许多主题的自定进度课程和讲师引导式课程。
Databricks Labs 为 Databricks 中的 Python 开发提供了工具,例如 pytest 插件 和 pylint 插件。
支持 PySpark 和 pandas 之间的互操作性的功能包括:
Python 和 SQL 数据库连接工具包括:
- 适用于 Python 的 Databricks SQL 连接器使你能够使用 Python 代码在 Azure Databricks 资源上运行 SQL 命令。
- pyodbc 使你能够通过 ODBC 从本地 Python 代码连接到 Databricks 湖屋中存储的数据。
有关将 Python 工作负载移动到 Databricks 的常见问题解答和提示,请参阅 Databricks 知识库