将笔记本与 Databricks Connect 配合使用

注意

此功能适用于 Databricks Runtime 13.3 及更高版本。

可以通过在 Visual Studio Code 的 Databricks 扩展中使用 Databricks Connect 集成,运行 Azure Databricks 笔记本并在 Visual Studio Code IDE 中查看其结果,一次运行一个单元格或一次运行所有单元格均可。 所有代码都在本地运行,而涉及 DataFrame 操作的代码在远程 Azure Databricks 工作区中的群集上运行,运行响应发送回给本地调用方。 也可以调试单元格。 所有代码均在本地调试,而所有 Spark 代码则继续在远程 Azure Databricks 工作区中的群集上运行。 无法直接从客户端对核心 Spark 引擎代码进行调试。

默认情况下,如果没有本文中所述的 Databricks Connect 集成,笔记本的使用将受到限制:

  • 仅适用 Visual Studio Code 的 Databricks 扩展无法一次运行笔记本的一个单元格。
  • 无法调试单元格。
  • 只能将笔记本作为 Azure Databricks 作业运行,并仅在 Visual Studio Code IDE 中查看笔记本的运行结果。
  • 所有笔记本代码仅在与这些作业关联的群集上运行。

若要在 Visual Studio Code 的 Databricks 扩展中对笔记本启用 Databricks Connect 集成,必须先在 Visual Studio Code 的 Databricks 扩展中启用 Databricks Connect 集成。 请参阅使用 Databricks Connect 为 Visual Studio Code 的 Databricks 扩展调试代码

启用之后,对于文件名中以 .py 为扩展名的笔记本,当在 Visual Studio Code IDE 中打开该笔记本时,每个单元格都会显示“运行单元格”、“运行以上”和“调试单元格”按钮。 运行某个单元格时,其结果显示在 IDE 的单独选项卡中。 调试时,正在接受调试的单元格将显示“继续”、“停止”和“逐过程执行”按钮。 调试单元格时,可以使用 Visual Studio Code 调试功能,例如监视变量的状态以及查看调用堆栈和调试控制台。

启用之后,对于文件名中以 .ipynb 为扩展名的笔记本,当在 Visual Studio Code IDE 中打开该笔记本时,笔记本及其单元格将包含其他功能。 请参阅运行单元格在笔记本编辑器中使用代码单元格

有关文件名中以 .py.ipynb 为扩展名的笔记本格式的详细信息,请参阅导出和导入 Databricks 笔记本

此外,以下笔记本 global 已启用:

  • spark,表示 databricks.connect.DatabricksSession 的实例,预配置为实例化 DatabricksSession,方法是从扩展获取 Azure Databricks 身份验证凭据。 如果 DatabricksSession 已在笔记本单元格的代码中进行了实例化,则会改用这个 DatabricksSession 设置。 请参阅适用于 Python 的 Databricks Connect 的代码示例

  • udf,预配置为 pyspark.sql.functions.udf 的别名,它是 Python UDF 的别名。 请参阅 pyspark.sql.functions.udf

  • sql,预配置为 spark.sql 的别名。 spark,如前所述,表示 databricks.connect.DatabricksSession 的预配置实例。 请参阅 Spark SQL

  • dbutils,预配置为 Databricks 实用工具的实例,该实例从 databricks-sdk 中导入,并通过从扩展获取 Azure Databricks 身份验证凭据进行实例化。 请参阅使用 Databricks 实用工具

    注意

    使用 Databricks Connect 的笔记本仅支持一部分 Databricks 实用工具。

    要启用 dbutils.widgets,必须先在本地开发计算机的终端中运行以下命令来安装 Databricks SDK for Python:

    pip install 'databricks-sdk[notebook]'
    
  • display,预配置为 Jupyter 内置 IPython.display.display 的别名。 请参阅 IPython.display.display

  • displayHTML,预配置为 dbruntime.display.displayHTML 的别名,它是 ipythondisplay.HTML 的别名。 请参阅 IPython.display.html

此外,以下笔记本 magic 已启用:

  • %fs,这与进行 dbutils.fs 调用相同。 请参阅混合语言

  • %sh,它在本地计算机上使用单元格 magic %%script 运行命令。 这不会在远程 Azure Databricks 工作区中运行该命令。 请参阅混合语言

  • %md%md-sandbox,用于运行单元格 magic %%markdown。 请参阅混合语言

  • %sql,它运行 spark.sql。 请参阅混合语言

  • %pip,它在本地计算机上运行 pip install。 这不会在远程 Azure Databricks 工作区中运行 pip install。 请参阅使用 %pip 命令管理库

  • %run,运行另一个笔记本。 此笔记本 magic 可在 1.1.2 及更高版本的 Visual Studio Code 的 Databricks 扩展中使用。 请参阅从一个 Databricks 笔记本运行另一个笔记本

    注意

    若要启用 %run,必须先安装 nbformat 库,方法是在本地开发计算机的终端运行以下命令:

    pip install nbformat
    
  • # MAGIC。 此笔记本 magic 可在 1.1.2 及更高版本的 Visual Studio Code 的 Databricks 扩展中使用。

已启用的其他功能包括:

  • Spark 数据帧将转换为 pandas 数据帧,它们以 Jupyter 表格式显示。

限制包括:

  • 不支持笔记本 magic %r%scala,如果调用,会显示错误。 请参阅混合语言
  • 笔记本 magic %sql 不支持某些 DML 命令,例如“显示表”。