适用于 Scala 的 Databricks Connect
注意
本文介绍适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect。
本文演示如何将 Scala 与IntelliJ IDEA和Scala 插件结合使用以快速开始使用 Databricks Connect。
- 有关本文的 Python 版本,请参阅适用于 Python 的 Databricks Connect。
- 有关本文的 R 版本,请参阅适用于 R 的 Databricks Connect。
可以使用 Databricks Connect 将热门的 IDE(例如 IntelliJ IDEA、笔记本服务器和其他自定义应用程序)连接到 Azure Databricks 群集。 请参阅什么是 Databricks Partner Connect?。
教程
若要跳过此教程并使用其他 IDE,请参阅后续步骤。
要求
若要完成此教程,必须满足以下要求:
目标 Azure Databricks 工作区和群集必须满足 Databricks Connect 计算配置的要求。
必须提供群集 ID。 若要获取你的群集 ID,请在工作区中单击边栏上的“计算”,然后单击群集的名称。 在 Web 浏览器的地址栏中,复制 URL 中
clusters
和configuration
之间的字符串。已在开发计算机上安装 Java 开发工具包 (JDK)。 Databricks 建议使用与 Azure Databricks 群集上的 JDK 版本匹配的 JDK 安装版本。 下表显示了每个受支持的 Databricks Runtime 的 JDK 版本。
Databricks Runtime 版本 JDK 版本 13.3 LTS - 15.0,
13.3 ML LTS - 15.0 MLJDK 8 16.0 JDK 17 注意
如果未安装 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 OAuth 用户到计算机 (U2M) 身份验证和 Azure Databricks 配置文件向 Azure Databricks 工作区进行身份验证。 若要改用其他身份验证类型,请参阅配置连接属性。
配置 OAuth U2M 身份验证需要 Databricks CLI,如下所示:
如果尚未安装,请安装 Databricks CLI,如下所示:
Linux、macOS
运行以下两个命令,使用 Homebrew 安装 Databricks CLI:
brew tap databricks/tap brew install databricks
Windows
可以使用 winget、Chocolatey 或适用于 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:
通过 WSL 安装
curl
和zip
。 有关详细信息,请参阅操作系统文档。使用 WSL 通过运行以下命令来安装 Databricks CLI:
curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
通过运行以下命令确认安装了 Databricks CLI,该命令显示已安装的 Databricks CLI 的当前版本。 此版本应为 0.205.0 或更高版本:
databricks -v
注意
如果运行
databricks
但收到错误(如command not found: databricks
),或者如果运行databricks -v
而列出的版本号为 0.18 或更低,则表示计算机找不到正确版本的 Databricks CLI 可执行文件。 若要修复此问题,请参阅验证 CLI 安装。
启动 OAuth U2M 身份验证,如下所示:
通过对每个目标工作区运行以下命令,使用 Databricks CLI 在本地启动 OAuth 令牌管理。
在以下命令中,将
<workspace-url>
替换为 Azure Databricks 每工作区 URL,例如https://adb-1234567890123456.7.databricks.azure.cn
。databricks auth login --configure-cluster --host <workspace-url>
Databricks CLI 会提示将输入的信息保存为 Azure Databricks 配置文件。 按
Enter
接受建议的配置文件名称,或输入新的或现有的配置文件的名称。 任何具有相同名称的现有配置文件都会被输入的信息覆盖。 可以使用配置文件在多个工作区之间快速切换身份验证上下文。若要获取任何现有配置文件的列表,请在单独的终端或命令提示符中使用 Databricks CLI 来运行
databricks auth profiles
命令。 要查看特定配置文件的现有设置,请运行命令databricks auth env --profile <profile-name>
。在 Web 浏览器中,按照屏幕上的说明登录到 Azure Databricks 工作区。
通过终端或命令提示符,在显示的可用群集列表中,使用向上键和向下键选择工作区中的目标 Azure Databricks 群集,然后按
Enter
。 还可以键入群集显示名称的任何部分来筛选可用群集的列表。要查看配置文件的当前 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:创建项目
启动 IntelliJ IDEA。
在主菜单上,单击“文件”>“新建”>“项目”。
为项目指定有意义的名称。
对于“位置”,单击文件夹图标,然后完成屏幕说明以指定新 Scala 项目的路径。
对于“语言”,请单击“Scala”。
对于“生成系统”,请单击“sbt”。
在JDK下拉列表中,选择与群集上 JDK 版本匹配的开发计算机上现有的 JDK 安装,或选择“下载 JDK”,然后按照屏幕上的说明下载与群集上 JDK 版本匹配的 JDK。
注意
选择高于或低于群集上 JDK 版本的 JDK 安装可能会产生意外结果,或代码完全无法运行。
在“sbt”下拉列表中,选择最新版本。
在“Scala”下拉列表中,选择与群集上 Scala 版本匹配的 Scala 版本。 下表显示了每个受支持的 Databricks Runtime 的 Scala 版本:
Databricks Runtime 版本 Scala 版本 13.3 LTS - 15.0,
13.3 ML LTS - 15.0 ML2.12.15 注意
选择低于或高于群集上 Scala 版本的 Scala 版本可能会产生意外结果,或代码完全无法运行。
确保选中“Scala”旁边的“下载源”框。
对于“包前缀”,请输入用于项目源的包前缀值,例如
org.example.application
。确保选中“添加示例代码”框。
单击 “创建” 。
步骤 3:添加 Databricks Connect 包
打开新的 Scala 项目,在“项目”工具窗口中(“视图>”“工具 Windows”>“项目”),打开project-name>target中名为
build.sbt
的文件。将以下代码添加到
build.sbt
文件末尾,该文件声明项目对适用于 Scala 的 Databricks Connect 库的特定版本的依赖项:libraryDependencies += "com.databricks" % "databricks-connect" % "14.3.1"
将
14.3.1
替换为与群集上的 Databricks Runtime 版本匹配的 Databricks Connect 库版本。 可以在 Maven 中央存储库中找到 Databricks Connect 库版本号。单击“加载 sbt 更改”通知图标,使用新的库位置和依赖项更新 Scala 项目。
等待至 IDE 底部的
sbt
进度指示器消失。sbt
加载过程可能需要几分钟时间。
步骤 4:添加代码
在“项目”工具窗口中,打开 project-name> src > main > scala中名为
Main.scala
的文件。将文件中的任何现有代码替换为以下代码,然后保存该文件,具体取决于你的配置文件的名称。
如果步骤 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:运行代码
- 在远程 Azure Databricks 工作区中启动目标群集。
- 群集启动后,在主菜单上,单击“运行”>“运行 "Main"”。
- 在“运行”工具窗口(“查看>”“工具窗口”“>运行”)的“主”选项卡中,将显示
samples.nyctaxi.trips
表的前 5 行。
步骤 6:调试代码
- 目标群集仍在运行中,在前面的代码中,单击
df.limit(5).show()
旁边的装订线以设置断点。 - 在主菜单上,单击“运行”>”调试‘Main’“。
- 在“调试”工具窗口(“视图>”“工具 Windows”“>调试”)的“控制台”选项卡中,单击计算器(“计算表达式”)图标。
- 输入表达式
df.schema
,然后单击“计算”以显示 DataFrame 的架构。 - 在“调试”工具窗口的侧栏中,单击绿色箭头(恢复程序)图标。
- 在“控制台”窗格中,将显示
samples.nyctaxi.trips
的前 5 行。
后续步骤
若要了解有关 Databricks Connect 的详细信息,请参阅如下文章:
若要使用 Azure Databricks 个人访问令牌以外的 Azure Databricks 身份验证类型,请参阅配置连接属性。
若要使用其他 IDE,请参阅以下内容:
若要查看更多简单的代码示例,请参阅适用于 Scala 的 Databricks Connect 代码示例。
若要查看更复杂的代码示例,请参阅 GitHub 中的 Databricks Connect 示例应用程序存储库,具体而言:
若要从适用于 Databricks Runtime 12.2 LTS 及更低版本的 Databricks Connect 迁移到适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect,请参阅迁移到适用于 Scala 的 Databricks Connect。