本部分提供了使用 Python 语言在 Azure Databricks 中开发笔记本和作业的指南,包括常见工作流和任务的教程,以及 API、库和工具的链接。
开始操作:
- 导入代码:从文件或 Git 存储库导入自己的代码,或者尝试下面列出的教程。 Databricks 建议使用交互式 Databricks 笔记本进行学习。
- 在群集上运行代码:创建自己的群集,或确保你有权使用共享群集。 将笔记本附加到群集,并运行笔记本。
- 然后,可以:
- 使用 Apache Spark 处理较大的数据集
- 添加可视化效果
- 将工作负载作为作业来自动完成
- 使用机器学习 分析数据
- 在 IDE 中开发
教程
以下教程提供示例代码和笔记本来了解常见工作流。 有关将笔记本示例导入工作区的说明,请参阅 “导入笔记本 ”。
数据工程
- 教程:使用 Apache Spark 数据帧加载和转换数据 提供了一个演练,可帮助你了解用于数据准备和分析的 Apache Spark 数据帧。
- 教程:Delta Lake。
- 教程:通过 DLT 使用变更数据捕获生成 ETL 管道。
数据科学和机器学习
- Apache Spark 数据帧入门,用于数据准备和分析: 教程:使用 Apache Spark 数据帧加载和转换数据
- 教程:Azure Databricks 上的端到端经典 ML 模型。 有关其他示例,请参阅 AI 和机器学习教程。
- 借助 AutoML ,可以快速开始在自己的数据集上开发机器学习模型。 其玻璃盒方法可生成具有完整机器学习工作流的笔记本,你可以克隆、修改和重新运行该工作流。
- 在 Unity 目录中管理模型生命周期
在 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 来填补这一空白。 对于熟悉 pandas 但不是 Apache Spark 的数据科学家来说,此 开源 API 是理想的选择。
使用笔记本和 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 脚本而不是笔记本,请使用创建作业请求正文中 spark_python_task
下的 tasks
字段。
机器学习
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 终结点进行托管。 有关详细信息和示例,请参阅 适用于 Gen AI 代理和 ML 模型生命周期的 MLflow 或 MLflow Python API 文档。
若要开始使用常见的机器学习工作负载,请参阅以下页面:
- 使用 MLflow 训练 scikit-learn 和跟踪 :10 分钟教程:使用 scikit-learn 在 Databricks 上进行机器学习
- 训练深度学习模型: 深度学习
- 超参数优化:并行优化 Hyperopt 超参数
- 图形分析: 如何在 Azure Databricks 上使用 GraphFrames
IDE、开发人员工具和 SDK
除了在 Azure Databricks 笔记本中开发 Python 代码之外,还可以使用集成开发环境 (IDE)(如 PyCharm、Jupyter 和 Visual Studio Code)在外部进行开发。 若要在外部开发环境和 Databricks 之间同步工作,有几种选项:
- 代码:可以使用 Git 同步代码。 请参阅 Databricks Git 文件夹的 Git 集成。
- 库和作业:可以在外部创建库(如 Python 滚轮文件),并将其上传到 Databricks。 这些库可以在 Databricks 笔记本中导入,或者可用于创建作业。 请参阅安装库和使用 Databricks 作业的流程编排。
- 远程计算机执行:可以从本地 IDE 运行代码,以便进行交互式开发和测试。 IDE 可以与 Azure Databricks 通信,以在 Azure Databricks 群集上执行 Apache Spark 和大型计算。 请参阅 Databricks Connect。
Databricks 提供一组 SDK,包括 Python SDK,支持自动化并与外部工具集成。 可以使用 Databricks SDK 来管理群集和库、代码和其他工作区对象、工作负载和作业等资源。 请参阅 Databricks SDK。
有关 IDE、开发人员工具和 SDK 的详细信息,请参阅 本地开发工具。
其他资源
- Databricks 学院提供许多主题的自学及讲师授课课程。
- Databricks Labs 为 Databricks 中的 Python 开发提供了工具,例如 pytest 插件 和 pylint 插件。
- 支持 PySpark 和 pandas 之间互操作性的功能包括以下内容:
- Python 和 SQL 数据库连接工具包括:
- Databricks SQL Connector for Python 允许使用 Python 代码在 Azure Databricks 资源上运行 SQL 命令。
- pyodbc 允许通过 ODBC 从本地 Python 代码连接到 Databricks lakehouse 中存储的数据。
- 有关将 Python 工作负载移动到 Databricks 的常见问题解答和提示,请参阅 Databricks 知识库