本文演示如何使用 IntelliJ IDEA 和 Scala 插件快速开始使用 Databricks Connect for Scala。
在本教程中,你将在 IntelliJ IDEA 中创建项目,安装 Databricks Connect for Databricks Runtime 13.3 LTS 及更高版本,并在 IntelliJ IDEA 的 Databricks 工作区中的计算上运行简单代码。
要求
若要完成此教程,必须满足以下要求:
目标 Azure Databricks 工作区和群集必须满足 Databricks Connect 的计算要求。
必须提供群集 ID。 若要获取群集 ID,请在工作区中单击边栏上的 “计算 ”,然后单击群集的名称。 在 Web 浏览器的地址栏中,复制 URL 之间
clusters
和configuration
URL 中的字符字符串。本地环境和计算满足 Databricks Connect for Scala 安装版本要求。
已在开发计算机上安装 Java 开发工具包(JDK)。 Databricks 建议 JDK 安装的版本与 Azure Databricks 群集上的 JDK 版本匹配。 若要在群集上查找 Databricks Runtime 的 JDK 版本,请参阅 Databricks Runtime 发行说明或版本支持矩阵的“系统环境”部分。
注释
如果未安装 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,
zip
安装和curl
通过 WSL。 有关详细信息,请参阅作系统的文档。运行以下命令,使用 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 版本。 请参阅 要求。
注释
选择群集上 Scala 版本低于或高于 Scala 版本的 Scala 版本可能会产生意外结果,或者代码根本无法运行。
确保选中 Scala 旁边的“下载源”框。
对于 包前缀,输入项目的源的一些包前缀值,例如
org.example.application
。确保选中 “添加示例代码 ”框。
单击 “创建” 。
步骤 3:添加 Databricks Connect 包
打开新的 Scala 项目后,在项目工具窗口中(查看>工具 Windows > 项目),在项目名称>目标中打开名为
build.sbt
的文件。将以下代码添加到文件的末尾
build.sbt
,该文件声明项目依赖于适用于 Scala 的特定版本的 Databricks Connect 库,与群集的 Databricks Runtime 版本兼容:libraryDependencies += "com.databricks" % "databricks-connect" % "16.4.2"
替换为
16.4.2
与群集上的 Databricks Runtime 版本匹配的 Databricks Connect 库的版本。 例如,Databricks Connect 16.4.2 与 Databricks Runtime 16.4 LTS 匹配。 可以在 Maven 中央存储库中找到 Databricks Connect 库版本号。单击 “加载 sbt 更改 通知”图标,使用新的库位置和依赖项更新 Scala 项目。
sbt
等待 IDE 底部的进度指示器消失。sbt
加载过程可能需要几分钟才能完成。
步骤 4:添加代码
在“项目”工具窗口中,打开名为
Main.scala
project-name> src > 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”。
在 “运行 工具”窗口(查看 > 工具窗口 > 运行)的 “主 ”选项卡上,将显示表的前 5 行
samples.nyctaxi.trips
。
步骤 6:调试代码
在目标群集仍在运行的情况下,在前面的代码中,单击断点旁边的
df.limit(5).show()
装订线以设置断点。在主菜单上,单击“ 运行 > 调试”Main”。
在 “调试 工具”窗口中(查看 > 工具 Windows > 调试),在 “控制台 ”选项卡上,单击计算器(计算表达式)图标。
输入表达式
df.schema
,然后单击“ 计算 ”以显示 DataFrame 的架构。在 “调试 ”工具窗口的边栏中,单击绿色箭头(恢复程序)图标。
在 “控制台 ”窗格中,将显示表的前 5 行
samples.nyctaxi.trips
。