安装适用于 Scala 的 Databricks Connect

注意

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

本文介绍如何安装适用于 Scala 的 Databricks Connect。 请参阅什么是 Databricks Connect?。 有关本文的 Python 版本,请参阅安装适用于 Python 的 Databricks Connect

要求

  • 目标 Azure Databricks 工作区和群集必须满足 Databricks Connect 群集配置的要求。
  • 在开发计算机上安装的 Java 开发工具包 (JDK)。 Databricks 建议使用与 Azure Databricks 群集上的 JDK 版本匹配的 JDK 安装版本。 若要查找群集上的 JDK 版本,请查看群集 Databricks Runtime 发行说明的“系统环境”部分。 例如,Zulu 8.70.0.23-CA-linux64 对应 JDK 8。 请参阅 Databricks Runtime 发行说明版本和兼容性
  • 在开发计算机上安装的 Scala。 Databricks 建议使用与 Azure Databricks 群集上的 Scala 版本匹配的 Scala 安装版本。 若要在群集上查找 Scala 版本,请查看群集 Databricks Runtime 发行说明的“系统环境”部分。 请参阅 Databricks Runtime 发行说明版本和兼容性
  • 开发计算机上的 Scala 生成工具,例如 sbt

安装客户端

满足 Databricks Connect 的要求后,请完成以下步骤来设置 Databricks Connect 客户端。

步骤 1:添加对 Databricks Connect 客户端的引用

  1. 在 Scala 项目的生成文件中,例如 build.sbt (sbt)、pom.xml (Maven) 或 build.gradle (Gradle),添加以下 Databricks Connect 客户端引用:

    Sbt

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

    Maven

    <dependency>
      <groupId>com.databricks</groupId>
      <artifactId>databricks-connect</artifactId>
      <version>14.0.0</version>
    </dependency>
    

    Gradle

    implementation 'com.databricks.databricks-connect:14.0.0'
    
  2. 14.0.0 替换为与群集上的 Databricks Runtime 版本匹配的 Databricks Connect 库版本。 可以在 Maven 中央存储库中找到 Databricks Connect 库版本号。

第 2 步:配置连接属性

本部分将配置属性以在 Databricks Connect 和远程 Azure Databricks 群集之间建立连接。 这些属性包括用于对群集的 Databricks Connect 进行身份验证的设置。

对于适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect,就 Scala 而言,Databricks Connect 包括用于 Java 的 Databricks SDK。 此 SDK 实施 Databricks 客户端统一身份验证标准,这是一种整合且一致的体系结构和编程身份验证方法。 此方法可使 Azure Databricks 的身份验证设置和自动化更加集中和可预测。 借助此方法,你只需配置 Azure Databricks 身份验证一次,然后即可在多个 Azure Databricks 工具和 SDK 中使用该配置,而无需进一步更改身份验证配置。

注意

  1. 收集以下配置属性。

  2. 在代码中配置连接。 Databricks Connect 按以下顺序搜索配置属性,直到找到这些属性。 找到后,它不再搜索剩余的选项。 下表后面显示了每个选项的详细信息:

    配置属性选项 适用于
    1.DatabricksSession 类的 remote() 方法 仅限 Azure Databricks 个人访问令牌身份验证
    2.一个 Azure Databricks 配置文件 所有 Azure Databricks 身份验证类型
    3.SPARK_REMOTE 环境变量 仅限 Azure Databricks 个人访问令牌身份验证
    4.DATABRICKS_CONFIG_PROFILE 环境变量 所有 Azure Databricks 身份验证类型
    5.每个配置属性具有一个环境变量 所有 Azure Databricks 身份验证类型
    6.一个名为 DEFAULT 的 Azure Databricks 配置文件 所有 Azure Databricks 身份验证类型
    1. DatabricksSession 类的 remote() 方法

      对于仅适用于 Azure Databricks 个人访问令牌身份验证的此选项,请指定工作区实例名称、Azure Databricks 个人访问令牌和群集的 ID。

      可通过多种方式来初始化 DatabricksSession 类,如下所示:

      • DatabricksSession.builder 中设置 hosttokenclusterId 字段。
      • 使用 Databricks SDK 的 Config 类。
      • 指定 Databricks 配置文件和 clusterId 字段。

      Databricks 不建议在代码中直接指定这些连接属性。 而 Databricks 建议通过环境变量或配置文件来配置属性,如本部分通篇所述。 以下代码示例假定你自己提供建议的 retrieve* 函数的一些实现,以从用户或其他配置存储(例如 Azure 密钥保管库)中获取必要的属性。

      每种方法的代码如下所示:

      // Set the host, token, and clusterId fields in DatabricksSession.builder.
      // If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
      // cluster's ID, you do not also need to set the clusterId field here.
      import com.databricks.connect.DatabricksSession
      
      val spark = DatabricksSession.builder()
        .host(retrieveWorkspaceInstanceName())
        .token(retrieveToken())
        .clusterId(retrieveClusterId())
        .getOrCreate()
      
      // Use the Databricks SDK's Config class.
      // If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
      // cluster's ID, you do not also need to set the clusterId field here.
      import com.databricks.connect.DatabricksSession
      import com.databricks.sdk.core.DatabricksConfig
      
      val config = new DatabricksConfig()
        .setHost(retrieveWorkspaceInstanceName())
        .setToken(retrieveToken())
      val spark = DatabricksSession.builder()
        .sdkConfig(config)
        .clusterId(retrieveClusterId())
        .getOrCreate()
      
      // Specify a Databricks configuration profile along with the clusterId field.
      // If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
      // cluster's ID, you do not also need to set the clusterId field here.
      import com.databricks.connect.DatabricksSession
      import com.databricks.sdk.core.DatabricksConfig
      
      val config = new DatabricksConfig()
        .setProfile("<profile-name>")
      val spark = DatabricksSession.builder()
        .sdkConfig(config)
        .clusterId(retrieveClusterId())
        .getOrCreate()
      
    2. 一个 Azure Databricks 配置文件

      对于此选项,请创建或标识 Azure Databricks 配置文件,其中包含字段 cluster_id,以及需要使用的支持的 Databricks 身份验证类型所需的任何其他字段。

      每种身份验证类型所需的配置文件字段如下:

      然后通过 DatabricksConfig 类设置此配置文件的名称。

      可通过多种方式指定 cluster_id,如下所示:

      • 在配置文件中包含 cluster_id 字段,然后只需指定配置文件的名称即可。
      • 指定配置文件名称和 clusterId 字段。

      如果你已将 DATABRICKS_CLUSTER_ID 环境变量设置为群集的 ID,则也不需要指定 cluster_idclusterId 字段。

      每种方法的代码如下所示:

      // Include the cluster_id field in your configuration profile, and then
      // just specify the configuration profile's name:
      import com.databricks.connect.DatabricksSession
      import com.databricks.sdk.core.DatabricksConfig
      
      val config = new DatabricksConfig()
        .setProfile("<profile-name>")
        val spark = DatabricksSession.builder()
        .sdkConfig(config)
        .getOrCreate()
      
      // Specify the configuration profile name along with the clusterId field.
      // In this example, retrieveClusterId() assumes some custom implementation that
      // you provide to get the cluster ID from the user or from some other
      // configuration store:
      import com.databricks.connect.DatabricksSession
      import com.databricks.sdk.core.DatabricksConfig
      
      val config = new DatabricksConfig()
        .setProfile("<profile-name>")
      val spark = DatabricksSession.builder()
        .sdkConfig(config)
        .clusterId(retrieveClusterId())
        .getOrCreate()
      
    3. SPARK_REMOTE 环境变量

      对于仅适用于 Azure Databricks 个人访问令牌身份验证的此选项,请将 SPARK_REMOTE 环境变量设置为以下字符串,并将占位符替换为适当的值。

      sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
      

      然后如下所示初始化 DatabricksSession 类:

      import com.databricks.connect.DatabricksSession
      
      val spark = DatabricksSession.builder().getOrCreate()
      

      若要设置环境变量,请参阅操作系统对应的文档。

    4. DATABRICKS_CONFIG_PROFILE 环境变量

      对于此选项,请创建或标识 Azure Databricks 配置文件,其中包含字段 cluster_id,以及需要使用的支持的 Databricks 身份验证类型所需的任何其他字段。

      如果你已将 DATABRICKS_CLUSTER_ID 环境变量设置为群集的 ID,则也不需要指定 cluster_id

      每种身份验证类型所需的配置文件字段如下:

      DATABRICKS_CONFIG_PROFILE 环境变量设置为此配置文件的名称。 然后如下所示初始化 DatabricksSession 类:

      import com.databricks.connect.DatabricksSession
      
      val spark = DatabricksSession.builder().getOrCreate()
      

      若要设置环境变量,请参阅操作系统对应的文档。

    5. 每个配置属性具有一个环境变量

      对于此选项,请设置 DATABRICKS_CLUSTER_ID 环境变量,以及你要使用的受支持的 Databricks 身份验证类型所需的任何其他环境变量。

      每种身份验证类型所需的环境变量如下:

      然后如下所示初始化 DatabricksSession 类:

      import com.databricks.connect.DatabricksSession
      
      val spark = DatabricksSession.builder().getOrCreate()
      

      若要设置环境变量,请参阅操作系统对应的文档。

    6. 一个名为 DEFAULT 的 Azure Databricks 配置文件

      对于此选项,请创建或标识 Azure Databricks 配置文件,其中包含字段 cluster_id,以及需要使用的支持的 Databricks 身份验证类型所需的任何其他字段。

      如果你已将 DATABRICKS_CLUSTER_ID 环境变量设置为群集的 ID,则也不需要指定 cluster_id

      每种身份验证类型所需的配置文件字段如下:

      将此配置文件命名为 DEFAULT

      然后如下所示初始化 DatabricksSession 类:

      scala
      import com.databricks.connect.DatabricksSession
      
      val spark = DatabricksSession.builder().getOrCreate()