适用于 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 - 15.0,
    13.3 ML LTS - 15.0 ML
    JDK 8

    注意

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

  • 已安装IntelliJ IDEA。 本教程已使用 IntelliJ IDEA Community Edition 2023.3.6 进行测试。 如果使用不同版本的 IntelliJ IDEA,则以下说明可能有所不同。

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

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

本教程使用 Azure Databricks 配置文件在 Azure Databricks 工作区中进行身份验证。 若要改用其他身份验证类型,请参阅配置连接属性

步骤 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 - 15.0,
    13.3 ML LTS - 15.0 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" % "14.3.1"
    

    14.3.1 替换为与群集上的 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 的详细信息,请参阅如下文章: