本文介绍如何在标准访问模式下将 Scala 作业编译和部署为 启用了 Unity Catalog 的群集上的 JAR 文件。 它提供详细信息以确保:
- Java 开发工具包 (JDK) 版本与 Databricks 群集上的 JDK 版本匹配。
- Scala 版本与 Databricks 群集上的 Scala 版本匹配。
- Databricks Connect 作为依赖项添加,并匹配 Databricks 群集上运行的版本。
- 要编译的本地项目打包为单个 JAR,并包含所有依赖项。 或者,可以将依赖项安装为群集库。
- 删除 OSS Spark 上的所有依赖项,例如
spark-core
或hadoop-core
。 - 使用的所有 JAR 都添加到允许列表。
注释
标准访问模式下的 Unity Catalog 群集实现新的 Spark Connect 体系结构,该体系结构分隔客户端和服务器组件。 这种分离允许有效地共享群集,同时通过行筛选器和列掩码等措施完全强制实施 Unity Catalog 治理。 但是,标准访问模式下的 Unity Catalog 群集存在一些限制,例如缺少对 Spark 上下文和 RDD 等 API 的支持。 Unity Catalog 的计算访问模式限制列出了各种限制。
步骤 1:确保 Scala 和 JDK 版本匹配
在生成 JAR 之前,请确保用于编译代码的 Java 开发工具包 (JDK) 和 Scala 版本与群集上的 Databricks Runtime 版本上运行的版本匹配。 有关兼容版本的信息,请参阅版本支持矩阵。
步骤 2:将 Databricks Connect 添加为依赖项
Databricks Connect 必须用于生成 Scala JAR 而不是 OSS Spark。 Databricks Runtime 上运行的 Spark 版本比 OSS Spark 上当前可用的版本更新,包括性能和稳定性改进。
在 Scala 项目的生成文件中(例如 sbt 的 build.sbt
或 Maven 的 pom.xml
),添加对 Databricks Connect 的以下引用。 此外,请删除 OSS Spark 上的任何依赖项。
行家
<dependency>
<groupId>com.databricks</groupId>
<artifactId>databricks-connect</artifactId>
<version>16.2.0</version>
</dependency>
Sbt
libraryDependencies += "com.databricks" % "databricks-connect" % "16.2.+"
步骤 3:打包为单个 JAR 并部署
Databricks 建议将应用程序和所有依赖项打包到单个 JAR 文件中,也称为 über 或胖 JAR。 对于 sbt,请使用 sbt-assembly
,对于 Maven,请使用 maven-shade-plugin
。 有关详细信息,请参阅官方 Maven 着色插件 和 sbt-assembly 文档。
或者,可以将依赖项安装为群集范围的库。 有关详细信息,请参阅计算范围的库。
注释
对于安装为 Unity Catalog 标准集群库的 Scala JAR,JAR 库中的类必须位于命名包中,例如 com.databricks.MyClass
这样的命名包,否则在导入库时会发生错误。
使用 JAR 任务部署 JAR 文件。 请参阅用于作业的 JAR 任务。
步骤 4:确保允许列出 JAR
出于安全原因,标准访问模式要求管理员将 JAR 库的 Maven 坐标和路径添加到允许列表。 请参阅使用标准访问模式(原共享访问模式)的计算上的允许列表库和 init 脚本。