Instalowanie Połączenie usługi Databricks dla języka Scala

Uwaga

W tym artykule opisano usługę Databricks Połączenie dla środowiska Databricks Runtime 13.3 LTS i nowszych wersji.

W tym artykule opisano sposób instalowania usługi Databricks Połączenie dla języka Scala. Zobacz Co to jest usługa Databricks Połączenie?. Aby zapoznać się z wersją tego artykułu w języku Python, zobacz Instalowanie usługi Databricks Połączenie dla języka Python.

Wymagania

  • Docelowy obszar roboczy i klaster usługi Azure Databricks muszą spełniać wymagania dotyczące konfiguracji klastra dla usługi Databricks Połączenie.
  • Zestaw Java Development Kit (JDK) zainstalowany na komputerze deweloperskim. Usługa Databricks zaleca, aby wersja używanej instalacji zestawu JDK odpowiadała wersji zestawu JDK w klastrze usługi Azure Databricks. Aby znaleźć wersję zestawu JDK w klastrze, zapoznaj się z sekcją "Środowisko systemowe" informacji o wersji środowiska Databricks Runtime dla klastra. Na przykład Zulu 8.70.0.23-CA-linux64 odpowiada zestawowi JDK 8. Zobacz Databricks Runtime release notes versions and compatibility (Wersje i zgodność środowiska Databricks Runtime).
  • Język Scala zainstalowany na komputerze deweloperskim. Usługa Databricks zaleca, aby wersja używanej instalacji języka Scala odpowiadała wersji języka Scala w klastrze usługi Azure Databricks. Aby znaleźć wersję języka Scala w klastrze, zapoznaj się z sekcją "Środowisko systemowe" informacji o wersji środowiska Databricks Runtime dla klastra. Zobacz Databricks Runtime release notes versions and compatibility (Wersje i zgodność środowiska Databricks Runtime).
  • Narzędzie kompilacji Scala na maszynie deweloperów, takie jak sbt.

Konfigurowanie klienta

Po spełnieniu wymagań dotyczących usługi Databricks Połączenie wykonaj następujące kroki, aby skonfigurować klienta usługi Databricks Połączenie.

Krok 1. Dodawanie odwołania do klienta usługi Databricks Połączenie

  1. W pliku kompilacji projektu Scala, takim jak build.sbt dla programu , pom.xml dla programu Maven lub build.gradle narzędzia Gradle dodaj następujące odwołanie do klienta usługi Databricks sbtPołączenie:

    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. Zastąp 14.0.0 element wersją biblioteki usługi Databricks Połączenie zgodną z wersją środowiska Databricks Runtime w klastrze. Numery wersji biblioteki usługi Databricks Połączenie można znaleźć w centralnym repozytorium Maven.

Krok 2. Konfigurowanie właściwości połączenia

W tej sekcji skonfigurujesz właściwości w celu nawiązania połączenia między usługą Databricks Połączenie a zdalnym klastrem usługi Azure Databricks. Te właściwości obejmują ustawienia uwierzytelniania usługi Databricks Połączenie w klastrze.

W przypadku usługi Databricks Połączenie dla środowiska Databricks Runtime 13.3 LTS lub nowszego dla języka Scala usługa Databricks Połączenie zawiera zestaw SDK usługi Databricks dla języka Java. Ten zestaw SDK implementuje ujednolicony standard uwierzytelniania klienta usługi Databricks, skonsolidowane i spójne podejście architektoniczne i programowe do uwierzytelniania. Takie podejście sprawia, że konfigurowanie i automatyzowanie uwierzytelniania za pomocą usługi Azure Databricks jest bardziej scentralizowane i przewidywalne. Umożliwia ona skonfigurowanie uwierzytelniania usługi Azure Databricks raz, a następnie użycie tej konfiguracji w wielu narzędziach i zestawach SDK usługi Azure Databricks bez dalszych zmian konfiguracji uwierzytelniania.

Uwaga

  • Uwierzytelnianie typu użytkownik-komputer (U2M) protokołu OAuth jest obsługiwane w zestawie SDK usługi Databricks dla języka Java 0.18.0 i nowszych. Może być konieczne zaktualizowanie zainstalowanej wersji zestawu SDK usługi Databricks dla języka Java do wersji 0.18.0 lub nowszej w celu użycia uwierzytelniania OAuth U2M. Zobacz Wprowadzenie do zestawu SDK usługi Databricks dla języka Java.

    W przypadku uwierzytelniania OAuth U2M należy użyć interfejsu wiersza polecenia usługi Databricks do uwierzytelnienia przed uruchomieniem kodu Języka Scala. Zobacz Samouczek.

  • Uwierzytelnianie maszyny do maszyny (M2M) protokołu OAuth jest obsługiwane w zestawie SDK usługi Databricks dla języka Java 0.17.0 i nowszych. Może być konieczne zaktualizowanie zainstalowanej wersji zestawu SDK usługi Databricks dla języka Java do wersji 0.17.0 lub nowszej w celu użycia uwierzytelniania OAuth U2M. Zobacz Wprowadzenie do zestawu SDK usługi Databricks dla języka Java.

  • Zestaw SDK usługi Databricks dla języka Java nie zaimplementował jeszcze uwierzytelniania tożsamości zarządzanych platformy Azure.

  1. Zbierz następujące właściwości konfiguracji.

  2. Skonfiguruj połączenie w kodzie. Usługa Databricks Połączenie wyszukuje właściwości konfiguracji w następującej kolejności do momentu ich znalezienia. Po znalezieniu ich przestanie przeszukiwać pozostałe opcje. Szczegóły każdej opcji zostaną wyświetlone po poniższej tabeli:

    Opcja właściwości konfiguracji Dotyczy
    1. DatabricksSession Metoda klasy remote() Uwierzytelnianie tylko osobistego tokenu dostępu w usłudze Azure Databricks
    2. Profil konfiguracji usługi Azure Databricks Wszystkie typy uwierzytelniania usługi Azure Databricks
    3. Zmienna SPARK_REMOTE środowiskowa Uwierzytelnianie tylko osobistego tokenu dostępu w usłudze Azure Databricks
    4. Zmienna DATABRICKS_CONFIG_PROFILE środowiskowa Wszystkie typy uwierzytelniania usługi Azure Databricks
    5. Zmienna środowiskowa dla każdej właściwości konfiguracji Wszystkie typy uwierzytelniania usługi Azure Databricks
    6. Profil konfiguracji usługi Azure Databricks o nazwie DEFAULT Wszystkie typy uwierzytelniania usługi Azure Databricks
    1. DatabricksSession Metoda klasy remote()

      W przypadku tej opcji, która ma zastosowanie tylko do uwierzytelniania osobistego tokenu dostępu usługi Azure Databricks, określ nazwę wystąpienia obszaru roboczego, osobisty token dostępu usługi Azure Databricks oraz identyfikator klastra.

      Klasę DatabricksSession można zainicjować na kilka sposobów w następujący sposób:

      • hostUstaw pola , tokeni clusterId w pliku DatabricksSession.builder.
      • Użyj klasy zestawu SDK Config usługi Databricks.
      • Określ profil konfiguracji usługi Databricks wraz z polem clusterId .

      Usługa Databricks nie zaleca bezpośredniego określania tych właściwości połączenia w kodzie. Zamiast tego usługa Databricks zaleca konfigurowanie właściwości za pomocą zmiennych środowiskowych lub plików konfiguracji, zgodnie z opisem w tej sekcji. W poniższych przykładach kodu założono, że udostępniasz implementację proponowanych retrieve* funkcji samodzielnie, aby uzyskać niezbędne właściwości od użytkownika lub z innego magazynu konfiguracji, takiego jak Azure KeyVault.

      Kod dla każdego z tych podejść jest następujący:

      // 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. Profil konfiguracji usługi Azure Databricks

      W przypadku tej opcji utwórz lub zidentyfikuj profil konfiguracji usługi Azure Databricks zawierający pole cluster_id i inne pola, które są niezbędne dla obsługiwanego typu uwierzytelniania usługi Databricks, którego chcesz użyć.

      Wymagane pola profilu konfiguracji dla każdego typu uwierzytelniania są następujące:

      Następnie ustaw nazwę tego profilu konfiguracji za pomocą DatabricksConfig klasy .

      Możesz określić cluster_id na kilka sposobów w następujący sposób:

      • Uwzględnij cluster_id pole w profilu konfiguracji, a następnie po prostu określ nazwę profilu konfiguracji.
      • Określ nazwę profilu konfiguracji wraz z polem clusterId .

      Jeśli zmienna DATABRICKS_CLUSTER_ID środowiskowa jest już ustawiona przy użyciu identyfikatora klastra, nie trzeba również określać cluster_id pól lub clusterId .

      Kod dla każdego z tych podejść jest następujący:

      // 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. Zmienna SPARK_REMOTE środowiskowa

      W przypadku tej opcji, która dotyczy tylko uwierzytelniania osobistego tokenu dostępu usługi Azure Databricks, ustaw SPARK_REMOTE zmienną środowiskową na następujący ciąg, zastępując symbole zastępcze odpowiednimi wartościami.

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

      Następnie zainicjuj klasę DatabricksSession w następujący sposób:

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

      Aby ustawić zmienne środowiskowe, zapoznaj się z dokumentacją systemu operacyjnego.

    4. Zmienna DATABRICKS_CONFIG_PROFILE środowiskowa

      W przypadku tej opcji utwórz lub zidentyfikuj profil konfiguracji usługi Azure Databricks zawierający pole cluster_id i inne pola, które są niezbędne dla obsługiwanego typu uwierzytelniania usługi Databricks, którego chcesz użyć.

      Jeśli zmienna DATABRICKS_CLUSTER_ID środowiskowa jest już ustawiona przy użyciu identyfikatora klastra, nie trzeba również określać zmiennej cluster_id.

      Wymagane pola profilu konfiguracji dla każdego typu uwierzytelniania są następujące:

      Ustaw zmienną DATABRICKS_CONFIG_PROFILE środowiskową na nazwę tego profilu konfiguracji. Następnie zainicjuj klasę DatabricksSession w następujący sposób:

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

      Aby ustawić zmienne środowiskowe, zapoznaj się z dokumentacją systemu operacyjnego.

    5. Zmienna środowiskowa dla każdej właściwości konfiguracji

      W przypadku tej opcji ustaw zmienną DATABRICKS_CLUSTER_ID środowiskową i wszelkie inne zmienne środowiskowe, które są niezbędne dla obsługiwanego typu uwierzytelniania usługi Databricks, którego chcesz użyć.

      Wymagane zmienne środowiskowe dla każdego typu uwierzytelniania są następujące:

      Następnie zainicjuj klasę DatabricksSession w następujący sposób:

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

      Aby ustawić zmienne środowiskowe, zapoznaj się z dokumentacją systemu operacyjnego.

    6. Profil konfiguracji usługi Azure Databricks o nazwie DEFAULT

      W przypadku tej opcji utwórz lub zidentyfikuj profil konfiguracji usługi Azure Databricks zawierający pole cluster_id i inne pola, które są niezbędne dla obsługiwanego typu uwierzytelniania usługi Databricks, którego chcesz użyć.

      Jeśli zmienna DATABRICKS_CLUSTER_ID środowiskowa jest już ustawiona przy użyciu identyfikatora klastra, nie trzeba również określać zmiennej cluster_id.

      Wymagane pola profilu konfiguracji dla każdego typu uwierzytelniania są następujące:

      Nadaj nazwę temu profilowi DEFAULTkonfiguracji .

      Następnie zainicjuj klasę DatabricksSession w następujący sposób:

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