本部分提供了使用 Azure Databricks Python语言开发笔记本和作业的指南,包括常见工作流和任务的教程以及 API、库和工具的链接。
开始操作:
- 导入代码:从文件或 Git 存储库导入自己的代码,或者尝试下面列出的教程。 Databricks 建议使用交互式 Databricks 笔记本进行学习。
- 在群集上运行代码:创建自己的群集,或确保你有权使用共享群集。 将笔记本附加到群集,并运行笔记本。
- 接下来,您可以:
- 使用 Apache Spark 处理较大的数据集
- 添加可视化效果
- 将工作负载作为作业来自动完成
- 使用机器学习 分析数据
- 在 IDE 中开发
- 在工作区中运行和管理Python单元测试
教程
以下教程提供示例代码和笔记本来了解常见工作流。 有关将笔记本示例导入工作区的说明,请参阅 “导入笔记本 ”。
数据工程
- 教程:使用 Apache Spark 数据帧加载和转换数据 提供了一个演练,可帮助你了解用于数据准备和分析的 Apache Spark 数据帧。
- 教程:创建和管理 Delta Lake 表。
- 教程:使用变更数据捕获生成 ETL 管道。
数据科学和机器学习
- Apache Spark 数据帧入门,用于数据准备和分析: 教程:使用 Apache Spark 数据帧加载和转换数据
- 教程:在 Azure Databricks 上构建端到端的传统机器学习模型。 有关其他示例,请参阅 AI 和机器学习教程。
- 借助 AutoML ,可以快速开始在自己的数据集上开发机器学习模型。 其玻璃盒方法可生成具有完整机器学习工作流的笔记本,你可以克隆、修改和重新运行该工作流。
- 在 Unity 目录中管理模型生命周期
在Python笔记本中调试
该示例笔记本演示如何在 Databricks 笔记本中使用Python调试器(pdb)。 若要使用Python调试器,必须运行 Databricks Runtime 11.3 LTS 或更高版本。
使用 Databricks Runtime 12.2 LTS 及更高版本,可以使用 可变资源管理器跟踪笔记本 UI 中Python变量的当前值。 在逐步执行断点时,可以使用 Variable Explorer 观察 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 及更高版本的群集上可用。 对于运行 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笔记本中重启内核,请单击笔记本工具栏中的 compute selector,并将鼠标悬停在列表中的附加群集或 SQL 仓库上以显示侧菜单。 选择 “新建会话”。 这会启动一个新会话,这会重启Python进程。
Databricks Git 文件夹 允许用户将笔记本和其他文件与 Git 存储库同步。 Databricks Git 文件夹有助于代码版本控制与协作,并且可以简化将完整的代码存储库导入到Azure Databricks、查看过去的笔记本版本以及与 IDE 开发集成。 通过克隆远程 Git 存储库开始。 然后,可以使用存储库克隆打开或创建 笔记本,将笔记本附加到 群集,然后 运行笔记本。
群集和库
Azure Databricks compute为任何大小的群集提供计算管理:从单节点群集到大型群集。 可以根据需求自定义群集硬件和库。 数据科学家通常可以通过 创建群集 或使用现有的 共享群集开始工作。 有权访问群集后,可以将 笔记本附加到 群集或在群集上运行作业。
Azure Databricks 群集使用 Databricks Runtime,该运行时提供许多开箱即用的流行库,包括 Apache Spark、Delta Lake、pandas 等。 还可以安装其他第三方或自定义Python库以用于笔记本和作业。
- 从 Databricks Runtime 发行说明版本和兼容性中的默认库开始。 请使用Databricks Runtime for Machine Learning处理机器学习工作负荷。 有关预安装的库的完整列表,请参阅 Databricks Runtime 发行说明版本和兼容性。
- 使用 笔记本范围的 Python 库自定义您的环境,这可以让您使用来自 PyPI 或其他存储库的库来修改笔记本或作业的环境。
%pip install my_librarymagic 命令将my_library安装到您当前连接的群集中的所有节点,但不会干扰具有标准访问模式的计算上的其他工作负载。 - 根据需要将非 Python 库安装为 计算范围库。
- 有关详细信息,请参阅 “安装库”。
可视化效果
Azure Databricks Python笔记本内置支持多种类型的可视化。 还可以使用 旧版可视化效果。
你也可以使用第三方库可视化数据;有些库已预安装在 Databricks Runtime 中,但你也可以安装自定义库。 常用选项包括:
工作
可以根据 Databricks 中的计划或触发的 jobs 自动执行Python工作负荷。 作业可以运行笔记本、Python脚本和Python滚轮文件。
- 使用 Databricks UI 或 Databricks REST API 创建和更新作业。
- Databricks Python SDK允许以编程方式创建、编辑和删除作业。
- Databricks CLI 提供了一个方便的命令行接口,用于自动执行作业。
提示
若要计划Python脚本而不是笔记本,请在创建作业请求的正文中使用 spark_python_task 下的 tasks 字段。
机器学习
Databricks 支持各种机器学习 (ML) 工作负载,包括表格数据的传统 ML、用于计算机视觉和自然语言处理的深度学习、推荐系统、图形分析等。 有关 Databricks 上的机器学习的一般信息,请参阅 Databricks 上的 AI 和机器学习。
对于 ML 算法,可以使用 Databricks Runtime 中预安装的库进行Machine Learning,其中包括常用的Python工具,例如 scikit-learn、TensorFlow、Keras、PyTorch、Apache Spark MLlib 和 XGBoost。 还可以 安装自定义库。
对于机器学习操作(MLOps),Azure Databricks为open source库 MLflow 提供托管服务。 借助 MLflow 跟踪 ,可以记录模型开发,并保存可重用格式的模型。 可以使用 MLflow 模型注册表 管理和自动将模型提升到生产环境。 作业 和 模型服务 允许将模型作为批处理和流式处理作业以及 REST 终结点进行托管。 有关详细信息和示例,请参阅 Databricks 上的 MLflow 或 MLflow Python API 文档。
若要开始使用常见的机器学习工作负载,请参阅以下页面:
- 使用 MLflow 训练 scikit-learn 和跟踪 :10 分钟教程:使用 scikit-learn 在 Databricks 上进行机器学习
- 训练深度学习模型: 深度学习
- 超参数优化: 使用 Optuna 进行超参数优化
- 图形分析:
如何在 Azure Databricks
IDE、开发人员工具和 SDK
除了在Azure Databricks笔记本中开发Python代码,还可以使用 PyCharm、Jupyter 和 Visual Studio Code 等集成开发环境(IDE)在外部开发。 若要在外部开发环境和 Databricks 之间同步工作,有几种选项:
- 代码:可以使用 Git 同步代码。 请参阅 Azure Databricks Git 文件夹。
- Libraries 和 Jobs:可以在外部创建库(如 Python wheel 文件),并将其上传到 Databricks。 这些库可以在 Databricks 笔记本中导入,或者可用于创建作业。 请参阅 安装库 和 Lakeflow 作业。
- 远程计算机执行:可以从本地 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 插件。 Azure Databricks还提供功能来帮助管理工作区中的Python单元测试文件。
- 支持 PySpark 和 pandas 之间互操作性的功能包括以下内容:
- Python和 SQL 数据库连接工具包括:
- databricks SQL Connector for Python 允许使用Python代码在Azure Databricks资源上运行 SQL 命令。
- pyodbc允许通过 ODBC 从本地Python代码连接到 Databricks lakehouse 中存储的数据。
- 有关将Python工作负荷移动到 Databricks 的常见问题解答和提示,请参阅 Databricks 知识库。