Databricks 的 VSCode 扩展教程:在群集上运行 Python 以及将其作为作业运行

本教程演示了如何开始使用 Visual Studio Code 的 Databricks 扩展,方法是在远程工作区的 Azure Databricks 群集上运行基本 Python 代码文件,以及将其作为 Azure Databricks 作业运行。 请参阅什么是 Visual Studio Code 的 Databricks 扩展?

你将在本教程中做什么?

在此动手教程中,你将执行以下操作:

  • 创建 Azure Databricks 群集以运行本地 Python 代码。
  • 安装 Visual Studio Code 和 Visual Studio Code 的 Databricks 扩展。
  • 使用此信息设置 Azure Databricks 身份验证,并配置用于 Visual Studio Code 的 Databricks 扩展。
  • 使用有关你的远程群集的信息配置 Visual Studio Code 的 Databricks 扩展,并让扩展启动群集。
  • 使用你的远程 Azure Databricks 工作区中的位置配置 Visual Studio Code 的 Databricks 扩展,以便将本地 Python 代码上传到其中,并让扩展开始侦听代码上传事件。
  • 编写并保存一些 Python 代码,这会触发代码上传事件。
  • 使用 Visual Studio Code 的 Databricks 扩展在远程群集上运行上传的代码,然后使用群集来运行它,将其作为远程作业运行。

本教程仅演示如何运行 Python 代码文件,本教程仅演示如何设置 OAuth 用户到计算机 (U2M) 身份验证。 要了解如何调试 Python 代码文件、运行和调试笔记本,以及如何设置其他身份验证类型,请参阅后续步骤

步骤 1:创建群集

如果已有要使用的远程 Azure Databricks 群集,请记下群集的名称,并跳到步骤 2 以安装 Visual Studio Code。 要查看可用的群集,请在工作区的边栏中单击“计算”

Databricks 建议创建个人计算群集以快速开始。 要创建此群集,请执行以下操作:

  1. 在 Azure Databricks 工作区的边栏中,单击“计算”。
  2. 单击“使用个人计算进行创建”。
  3. 单击“创建计算”。
  4. 记下群集的名称,因为稍后在步骤 5 中将群集信息添加到扩展时需要它。

步骤 2:安装 Visual Studio Code

要安装 Visual Studio Code,请按照 macOSLinuxWindows 的说明进行操作。

如果已安装 Visual Studio Code,请检查它是否为版本 1.69.1 或更高。 为此,请在 Visual Studio Code 的主菜单中,单击“代码 > 关于 Visual Studio Code”(macOS) 或“帮助 > 关于”(Linux 或 Windows)。

要更新 Visual Studio Code,请在主菜单上,单击“代码 > 检查更新”(macOS) 或“帮助 > 检查更新”(Linux 或 Windows)。

步骤 3:安装 Databricks 扩展

安装 Visual Studio Code 扩展

  1. 在 Visual Studio Code 边栏中,单击“扩展”图标。
  2. 在“在市场中搜索扩展”中,输入 Databricks
  3. 在标为“Databricks”、副标题为“对 Databricks 的 IDE 支持”、由 Databricks 提供的条目中,单击“安装”。

步骤 4:设置 Azure Databricks 身份验证

在此步骤中,你会在 Visual Studio Code 的 Databricks 扩展和远程 Azure Databricks 工作区之间启用身份验证,如下所示:

  1. 从 Visual Studio Code 中,在本地开发计算机上打开一个空文件夹,用于包含将在步骤 7 后面创建和运行的 Python 代码。 为此,请在主菜单上单击“文件 > 打开文件夹”,然后按照屏幕上的说明进行操作。
  2. 在 Visual Studio Code 边栏上,单击 Databricks 徽标图标。
  3. 在“配置”窗格中单击“配置 Databricks”。
  4. 在“命令面板”中,对于“Databricks 主机”,请输入每个工作区的 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn。 然后,按 Enter。
  5. 选择“OAuth(用户到计算机)”
  6. 完成 Web 浏览器中的屏幕说明,以使用 Azure Databricks 完成身份验证。 如果出现提示,请允许 all-apis 访问

步骤 5:将群集信息添加到 Databricks 扩展并启动群集

  1. 已从上一步打开“配置”窗格,设置了身份验证的步骤,在群集旁边单击齿轮(配置群集)图标。
  2. 在“命令面板”中,选择你在步骤 1 中创建的群集的名称。
  3. 启动群集(如果尚未启动):在“群集”旁边,如果运行(启动群集)图标可见,请单击它。

启动群集

步骤 6:将代码上传位置添加到 Databricks 扩展并启动上传侦听器

  1. 已从上一步打开“配置”窗格,添加了群集信息的步骤,在同步目标旁边单击齿轮(配置同步目标)图标。
  2. 在“命令面板”中,选择“创建新的同步目标”
  3. Enter 确认生成的远程上传目录名称。
  4. 启动上传侦听器(如果尚未启动):在“同步目标”旁边,如果箭头圆圈(开始同步)图标可见,请单击它。

开始上传侦听器

步骤 7:创建并运行 Python 代码

  1. 创建本地 Python 代码文件:在边栏上,单击文件夹(资源管理器)图标。

  2. 在主菜单中,单击“文件”>“新建文件”。 将文件命名为“demo.py”,并将其保存到项目根目录

  3. 将以下代码添加到文件,然后将其保存。 此代码将创建并显示基本 PySpark 数据帧的内容:

    from pyspark.sql import SparkSession
    from pyspark.sql.types import *
    
    spark = SparkSession.builder.getOrCreate()
    
    schema = StructType([
       StructField('CustomerID', IntegerType(), False),
       StructField('FirstName',  StringType(),  False),
       StructField('LastName',   StringType(),  False)
    ])
    
    data = [
       [ 1000, 'Mathijs', 'Oosterhout-Rijntjes' ],
       [ 1001, 'Joost',   'van Brunswijk' ],
       [ 1002, 'Stan',    'Bokenkamp' ]
    ]
    
    customers = spark.createDataFrame(data, schema)
    customers.show()
    
    # Output:
    #
    # +----------+---------+-------------------+
    # |CustomerID|FirstName|           LastName|
    # +----------+---------+-------------------+
    # |      1000|  Mathijs|Oosterhout-Rijntjes|
    # |      1001|    Joost|      van Brunswijk|
    # |      1002|     Stan|          Bokenkamp|
    # +----------+---------+-------------------+
    
  4. 在资源管理器视图中,右键单击 demo.py 文件,然后单击“在 Databricks 中上传和运行文件”。 输出将显示在“调试控制台”窗格中。

在 Databricks 上上传和运行文件

步骤 8:将代码作为作业运行

在上一步中,你直接在远程群集上运行了 Python 代码。 而在此步骤中,你将启动一个工作流,它使用群集将代码作为 Azure Databricks 作业运行。 请参阅什么是 Azure Databricks 作业?

要将此代码作为作业运行,请在“资源管理器”视图中右键单击 demo.py 文件,然后单击“在 Databricks 上将文件作为工作流运行”。 输出会显示在 demo.py 文件编辑器旁边单独的编辑器选项卡中。

在 Databricks 上将文件作为工作流运行

本教程到此结束。

后续步骤

现在,你已成功使用 Visual Studio Code 的 Databricks 扩展来上传本地 Python 文件,并远程运行它,了解更多关于如何使用该扩展的信息: