适用于 Scala 的 Databricks Connect

注意

本文介绍适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect。

本文演示如何将 Scala 与IntelliJ IDEAScala 插件结合使用以快速开始使用 Databricks Connect。

可以使用 Databricks Connect 将热门的 IDE(例如 IntelliJ IDEA、笔记本服务器和其他自定义应用程序)连接到 Azure Databricks 群集。 请参阅什么是 Databricks Partner Connect?

教程

若要跳过此教程并使用其他 IDE,请参阅后续步骤

要求

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

  • 目标 Azure Databricks 工作区和群集必须满足 Databricks Connect 群集配置的要求。

  • 必须提供群集 ID。 若要获取你的群集 ID,请在工作区中单击边栏上的“计算”,然后单击群集的名称。 在 Web 浏览器的地址栏中,复制 URL 中 clustersconfiguration 之间的字符串。

  • 已在开发计算机上安装 Java 开发工具包 (JDK)。 Databricks 建议使用与 Azure Databricks 群集上的 JDK 版本匹配的 JDK 安装版本。 下表显示了每个受支持的 Databricks Runtime 的 JDK 版本。

    Databricks Runtime 版本 JDK 版本
    13.3 LTS - 14.3;
    13.3 ML LTS - 14.3 ML
    JDK 8

    注意

    如果未安装 JDK,或者已在开发计算机上安装多个 JDK,可以稍后在步骤 1 中安装或选择特定的 JDK。 选择低于或高于群集上 JDK 版本的 JDK 安装可能会产生意外结果,或代码完全无法运行。

  • 已安装IntelliJ IDEA

  • 已安装适用于 IntelliJ IDEA 的Scala插件。

步骤 1:配置 Azure Databricks 身份验证

本教程使用 Azure Databricks OAuth 用户到计算机 (U2M) 身份验证和 Azure Databricks 配置文件向 Azure Databricks 工作区进行身份验证。 若要改用其他身份验证类型,请参阅配置连接属性

配置 OAuth U2M 身份验证需要 Databricks CLI,如下所示:

  1. 如果尚未安装,请安装 Databricks CLI,如下所示:

    Linux、macos

    运行以下两个命令,使用 Homebrew 安装 Databricks CLI:

    brew tap databricks/tap
    brew install databricks
    

    Windows

    可以使用 wingetChocolatey适用于 Linux 的 Windows 子系统 (WSL) 安装 Databricks CLI。 如果无法使用 winget、Chocolatey 或 WSL,则应跳过此过程,改为使用命令提示符或 PowerShell 从源安装 Databricks CLI

    注意

    使用 Chocolatey 安装 Databricks CLI 是试验性的

    若要使用 winget 安装 Databricks CLI,请运行以下两个命令,然后重启命令提示符:

    winget search databricks
    winget install Databricks.DatabricksCLI
    

    若要使用 Chocolatey 安装 Databricks CLI,请运行以下命令:

    choco install databricks-cli
    

    若要使用 WSL 安装 Databricks CLI:

    1. 通过 WSL 安装 curlzip。 有关详细信息,请参阅操作系统文档。

    2. 使用 WSL 通过运行以下命令来安装 Databricks CLI:

      curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
      
  2. 通过运行以下命令确认安装了 Databricks CLI,该命令显示已安装的 Databricks CLI 的当前版本。 此版本应为 0.205.0 或更高版本:

    databricks -v
    

    注意

    如果运行 databricks 但收到错误(如 command not found: databricks),或者如果运行 databricks -v 而列出的版本号为 0.18 或更低,则表示计算机找不到正确版本的 Databricks CLI 可执行文件。 若要修复此问题,请参阅验证 CLI 安装

启动 OAuth U2M 身份验证,如下所示:

  1. 通过对每个目标工作区运行以下命令,使用 Databricks CLI 在本地启动 OAuth 令牌管理。

    在以下命令中,将 <workspace-url> 替换为 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

    databricks auth login --configure-cluster --host <workspace-url>
    
  2. Databricks CLI 会提示将输入的信息保存为 Azure Databricks 配置文件。 按 Enter 接受建议的配置文件名称,或输入新的或现有的配置文件的名称。 任何具有相同名称的现有配置文件都会被输入的信息覆盖。 可以使用配置文件在多个工作区之间快速切换身份验证上下文。

    若要获取任何现有配置文件的列表,请在单独的终端或命令提示符中使用 Databricks CLI 来运行 databricks auth profiles 命令。 要查看特定配置文件的现有设置,请运行命令 databricks auth env --profile <profile-name>

  3. 在 Web 浏览器中,按照屏幕上的说明登录到 Azure Databricks 工作区。

  4. 通过终端或命令提示符,在显示的可用群集列表中,使用向上键和向下键选择工作区中的目标 Azure Databricks 群集,然后按 Enter。 还可以键入群集显示名称的任何部分来筛选可用群集的列表。

  5. 要查看配置文件的当前 OAuth 令牌值和令牌即将过期的时间戳,请运行以下命令之一:

    • databricks auth token --host <workspace-url>
    • databricks auth token -p <profile-name>
    • databricks auth token --host <workspace-url> -p <profile-name>

    如果你有多个配置文件有相同的 --host 值,则可能需要同时指定 --host-p 选项,以便 Databricks CLI 找到正确的、匹配的 OAuth 令牌信息。

步骤 2:创建项目

  1. 启动 IntelliJ IDEA。

  2. 在主菜单上,单击“文件”>“新建”>“项目”。

  3. 为项目指定有意义的名称

  4. 对于“位置”,单击文件夹图标,然后完成屏幕说明以指定新 Scala 项目的路径。

  5. 对于“语言”,请单击“Scala”。

  6. 对于“生成系统”,请单击“sbt”。

  7. JDK下拉列表中,选择与群集上 JDK 版本匹配的开发计算机上现有的 JDK 安装,或选择“下载 JDK”,然后按照屏幕上的说明下载与群集上 JDK 版本匹配的 JDK。

    注意

    选择高于或低于群集上 JDK 版本的 JDK 安装可能会产生意外结果,或代码完全无法运行。

  8. 在“sbt”下拉列表中,选择最新版本。

  9. 在“Scala”下拉列表中,选择与群集上 Scala 版本匹配的 Scala 版本。 下表显示了每个受支持的 Databricks Runtime 的 Scala 版本:

    Databricks Runtime 版本 Scala 版本
    13.3 LTS - 14.3;
    13.3 ML LTS - 14.3 ML
    2.12.15

    注意

    选择低于或高于群集上 Scala 版本的 Scala 版本可能会产生意外结果,或代码完全无法运行。

  10. 确保选中“Scala”旁边的“下载源”框。

  11. 对于“包前缀”,请输入用于项目源的包前缀值,例如 org.example.application

  12. 确保选中“添加示例代码”框。

  13. 单击 “创建”

创建 IntelliJ IDEA 项目

步骤 3:添加 Databricks Connect 包

  1. 打开新的 Scala 项目,在“项目”工具窗口中(“视图>”“工具 Windows”>“项目”),打开project-name>target中名为build.sbt的文件。

  2. 将以下代码添加到 build.sbt 文件末尾,该文件声明项目对适用于 Scala 的 Databricks Connect 库的特定版本的依赖项:

    libraryDependencies += "com.databricks" % "databricks-connect" % "13.3.0"
    

    13.3.0 替换为与群集上的 Databricks Runtime 版本匹配的 Databricks Connect 库版本。 可以在 Maven 中央存储库中找到 Databricks Connect 库版本号。

  3. 单击“加载 sbt 更改”通知图标,使用新的库位置和依赖项更新 Scala 项目。

  4. 等待至 IDE 底部的 sbt 进度指示器消失。 sbt 加载过程可能需要几分钟时间。

安装 Databricks Connect 包

步骤 4:添加代码

  1. 在“项目”工具窗口中,打开 project-name> src > main > scala中名为Main.scala的文件。

  2. 将文件中的任何现有代码替换为以下代码,然后保存该文件,具体取决于你的配置文件的名称。

    如果步骤 1 中的配置文件名称为 DEFAULT,请将该文件中的任何现有代码替换为以下代码,然后保存该文件:

    package org.example.application
    
    import com.databricks.connect.DatabricksSession
    import org.apache.spark.sql.SparkSession
    
    object Main {
      def main(args: Array[String]): Unit = {
        val spark = DatabricksSession.builder().remote().getOrCreate()
        val df = spark.read.table("samples.nyctaxi.trips")
        df.limit(5).show()
      }
    }
    

    如果步骤 1 中的配置文件名称不为 DEFAULT,请转而将该文件中的任何现有代码替换为以下代码。 将占位符 <profile-name> 替换为步骤 1 中的配置文件的名称,然后保存文件:

    package org.example.application
    
    import com.databricks.connect.DatabricksSession
    import com.databricks.sdk.core.DatabricksConfig
    import org.apache.spark.sql.SparkSession
    
    object Main {
      def main(args: Array[String]): Unit = {
        val config = new DatabricksConfig().setProfile("<profile-name>")
        val spark = DatabricksSession.builder().sdkConfig(config).getOrCreate()
        val df = spark.read.table("samples.nyctaxi.trips")
        df.limit(5).show()
      }
    }
    

步骤 5:运行代码

  1. 在远程 Azure Databricks 工作区中启动目标群集。
  2. 群集启动后,在主菜单上,单击“运行”>“运行 "Main"”
  3. 在“运行”工具窗口(“查看>”“工具窗口”“>运行”)的“”选项卡中,将显示samples.nyctaxi.trips表的前 5 行。

步骤 6:调试代码

  1. 目标群集仍在运行中,在前面的代码中,单击df.limit(5).show()旁边的装订线以设置断点。
  2. 在主菜单上,单击“运行”>”调试‘Main’“
  3. 在“调试”工具窗口(“视图>”“工具 Windows”“>调试”)的“控制台”选项卡中,单击计算器(“计算表达式”)图标。
  4. 输入表达式 df.schema,然后单击“计算”以显示 DataFrame 的架构
  5. 在“调试”工具窗口的侧栏中,单击绿色箭头(恢复程序)图标。
  6. 在“控制台”窗格中,将显示 samples.nyctaxi.trips 的前 5 行

调试 IntelliJ IDEA 项目

后续步骤

若要了解有关 Databricks Connect 的详细信息,请参阅如下文章: