教程:在无服务器计算上运行代码

注释

本文适用于 Databricks Connect 15.4 LTS 及更高版本。

本文介绍如何在 IDE 中创建项目、设置虚拟环境、安装用于 Python 的 Databricks Connect,以及如何在 Databricks 工作区中的无服务器计算上运行代码。

本教程使用 Python 3.12 和 Databricks Connect 16.4 LTS。 若要使用 Databricks Connect 的其他版本的 Python,它们必须兼容。 请参阅 版本支持矩阵

要求

若要完成本教程,必须满足以下要求:

步骤 1:配置 Databricks 身份验证

本教程使用 Databricks OAuth 用户到计算机(U2M)身份验证 和 Databricks 配置文件 对 Databricks 工作区进行身份验证。

  1. 通过对每个目标工作区运行以下命令,使用 Databricks CLI 在本地启动 OAuth 令牌管理。 在以下命令中,将替换为 <workspace-url> Databricks 工作区实例 URL,例如 https://dbc-a1b2345c-d6e7.cloud.databricks.com

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI 会提示保存作为 Databricks 配置文件输入的信息。 按下 Enter 接受建议的配置文件名称,或输入新配置文件或现有配置文件的名称。 Databricks 建议用作 DEFAULT 配置文件名称。

  3. 在 Web 浏览器中,完成登录到 Databricks 工作区的屏幕说明。

步骤 2:创建新的 Python 虚拟环境

  1. 创建项目文件夹,并在 IDE 中打开它。 例如,在 Visual Studio Code 主菜单中,单击“文件>打开文件夹>打开

  2. 打开项目文件夹根目录处的终端窗口。 例如,在 Visual Studio Code 主菜单中,单击 “视图>终端”。

  3. 通过在终端中运行以下命令,为项目文件夹的根目录下调用 venv 的项目创建虚拟环境:

    python3.12 -m venv .venv
    
  4. 激活虚拟环境:

    # Linux/Mac
    source .venv/bin/activate
    
    # Windows
    .venv\Scripts\activate
    

步骤 3:安装 Databricks Connect

安装 Databricks Connect。 有关 Databricks Connect 16.4 的最新发布版本的信息,请参阅 Databricks Connect for Databricks Runtime 16.4

pip install "databricks-connect==16.4.*"

步骤 4:添加代码并运行

  1. 向项目添加新的 Python 文件main.py

  2. 在文件中输入以下代码,将占位符 <profile-name> 替换为步骤 1 中的配置文件的名称,然后保存该文件。 默认配置文件名称为 DEFAULT.

    from databricks.connect import DatabricksSession
    
    spark = DatabricksSession.builder.serverless().profile("<profile-name>").getOrCreate()
    
    df = spark.read.table("samples.nyctaxi.trips")
    df.show(5)
    
  3. 使用以下命令运行代码:

    python3 main.py
    

    返回表的五行:

    +--------------------+---------------------+-------------+-----------+---------+-----------+
    |tpep_pickup_datetime|tpep_dropoff_datetime|trip_distance|fare_amount|pickup_zip|dropoff_zip|
    +--------------------+---------------------+-------------+-----------+----------+-----------+
    | 2016-02-16 22:40:45|  2016-02-16 22:59:25|         5.35|       18.5|     10003|      11238|
    | 2016-02-05 16:06:44|  2016-02-05 16:26:03|          6.5|       21.5|     10282|      10001|
    | 2016-02-08 07:39:25|  2016-02-08 07:44:14|          0.9|        5.5|     10119|      10003|
    | 2016-02-29 22:25:33|  2016-02-29 22:38:09|          3.5|       13.5|     10001|      11222|
    | 2016-02-03 17:21:02|  2016-02-03 17:23:24|          0.3|        3.5|     10028|      10028|
    +--------------------+---------------------+-------------+-----------+----------+-----------+
    

你已成功使用 IDE 中的 Databricks Connect 对 Databricks 无服务器计算运行第一个查询。

步骤 5:使代码生产就绪

对于生产方案,请务必避免在 Spark 会话生成器中使用计算规范。 例如,如果将代码部署到经典群集: Standard 或使用 Dedicated.serverless() Spark 会话生成器中的 API,则会使用经典群集作为客户端创建新的无服务器 Spark 会话。

若要使代码灵活且可供生产使用,Spark 会话不应包含任何参数。

spark = DatabricksSession.builder.getOrCreate()

但是,当此代码在 Databricks 上运行时,将使用 Databricks 计算的默认全局 Spark 会话。

若要在 IDE 中启用无服务器计算,请使用 DEFAULT 配置文件,该配置文件由 DatabricksSession.builder 未指定参数时选择:

  1. 使用DEFAULT 中的说明创建名为的配置文件。

  2. 使用文本编辑器打开 .databrickscfg 该文件,该文件位于:

    • $HOME Unix、Linux 或 macOS 上的用户主文件夹:~/.databrickscfg

    • Windows %USERPROFILE% 上的(用户主页)文件夹。 例如,对于 macOS:

      nano ~/.databrickscfg
      
  3. 添加到serverless_compute_id = autoDEFAULT配置文件:

    [DEFAULT]
    host                  = https://my-workspace.cloud.databricks.com
    auth_type             = databricks-cli
    serverless_compute_id = auto
    
  4. 保存更改并退出编辑器。

  5. 修改代码以使用常规 Spark 会话并运行它:

    from databricks.connect import DatabricksSession
    
    spark = DatabricksSession.builder.getOrCreate()
    
    df = spark.read.table("samples.nyctaxi.trips")
    df.show(5)
    
    python3 main.py
    

已使用 DEFAULT 配置文件从 IDE 使用 Databricks Connect 成功在 Databricks 无服务器计算上运行生产就绪代码。

小窍门

还可以使用环境变量来设置与特定 Databricks 计算的连接:

  • 无服务器: DATABRICKS_SERVERLESS_COMPUTE_ID=auto
  • 经典: DATABRICKS_CLUSTER_ID=<your_cluster_id>