Konfigurasi komputasi untuk Databricks Connect

Catatan

Artikel ini membahas Databricks Connect untuk Databricks Runtime 13.3 LTS ke atas.

Halaman ini menjelaskan berbagai cara untuk mengonfigurasi koneksi antara Databricks Connect dan Azure Databricks cluster atau komputasi tanpa server.

Databricks Connect memungkinkan Anda menghubungkan IDE populer seperti Visual Studio Code, PyCharm, RStudio Desktop, IntelliJ IDEA, server notebook, dan aplikasi kustom lainnya ke kluster Azure Databricks. Lihat Databricks Connect.

Pengaturan

Sebelum memulai, Anda memerlukan hal-hal berikut:

Mengonfigurasi koneksi ke kluster

Ada beberapa cara untuk mengonfigurasi koneksi ke kluster Anda. Databricks Connect mencari properti konfigurasi dalam urutan berikut, dan menggunakan konfigurasi pertama yang ditemukannya. Untuk informasi konfigurasi tingkat lanjut, lihat Penggunaan tingkat lanjut Databricks Connect.

  1. Metode remote() kelas DatabricksSession.
  2. Profil konfigurasi Databricks
  3. Variabel lingkungan DATABRICKS_CONFIG_PROFILE
  4. Variabel lingkungan untuk setiap properti konfigurasi
  5. Profil konfigurasi Databricks bernama DEFAULT

Metode dari kelas DatabricksSessionremote()

Untuk opsi ini, yang berlaku untuk Authenticate dengan token akses pribadi Azure Databricks (warisan) saja, tentukan nama instans ruang kerja, token akses pribadi Azure Databricks, dan ID kluster.

Anda dapat menginisialisasi kelas DatabricksSession dengan beberapa cara.

  • Atur host, token, dan cluster_id pada DatabricksSession.builder.remote().
  • Gunakan kelas Databricks SDK Config .
  • Tentukan profil konfigurasi Databricks dengan bidang cluster_id.

Alih-alih menentukan properti koneksi ini dalam kode Anda, Databricks merekomendasikan untuk mengonfigurasi properti melalui variabel lingkungan atau file konfigurasi, seperti yang dijelaskan di seluruh bagian ini. Contoh kode berikut mengasumsikan bahwa Anda memberikan beberapa implementasi fungsi retrieve_* yang diusulkan untuk mendapatkan properti yang diperlukan dari pengguna atau dari beberapa penyimpanan konfigurasi lainnya, seperti Azure KeyVault.

Kode untuk masing-masing pendekatan ini adalah sebagai berikut:

Python

# Set the host, token, and cluster_id fields in DatabricksSession.builder.remote.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.remote(
host       = f"https://{retrieve_workspace_instance_name()}",
token      = retrieve_token(),
cluster_id = retrieve_cluster_id()
).getOrCreate()

Scala

// 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()

Python

# 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 cluster_id field here.
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
host       = f"https://{retrieve_workspace_instance_name()}",
token      = retrieve_token(),
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// 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()

Python

# Specify a Databricks configuration profile along with the `cluster_id` 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 cluster_id field here.
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
profile    = "<profile-name>",
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// 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()

Profil konfigurasi Databricks

Untuk opsi ini, buat atau identifikasi profil konfigurasi Azure Databricks yang berisi bidang cluster_id dan bidang lain yang diperlukan untuk jenis autentikasi Databricks yang ingin Anda gunakan.

Bidang profil konfigurasi yang diperlukan untuk setiap jenis autentikasi adalah sebagai berikut:

  • Untuk autentikasi token akses pribadi Azure Databricks: host dan token.
  • Untuk autentikasi komputer-ke-mesin (M2M) OAuth (jika didukung): host, , client_iddan client_secret.
  • Untuk autentikasi pengguna ke mesin (U2M) OAuth (jika didukung): .
  • Untuk autentikasi principal layanan Microsoft Entra ID (sebelumnya Azure Active Directory): host, azure_tenant_id, azure_client_id, azure_client_secret, dan mungkin azure_workspace_resource_id.
  • Untuk autentikasi Azure CLI: host.
  • Untuk autentikasi identitas terkelola Azure (jika didukung): host, azure_use_msi, azure_client_id, dan mungkin azure_workspace_resource_id.

Kemudian atur nama profil konfigurasi ini melalui kelas konfigurasi.

Anda dapat menentukan cluster_id dengan beberapa cara:

  • Sertakan cluster_id bidang di profil konfigurasi Anda, lalu cukup tentukan nama profil konfigurasi.
  • Tentukan nama profil konfigurasi beserta bidang cluster_id.

Jika Anda telah mengatur DATABRICKS_CLUSTER_ID variabel lingkungan dengan ID kluster, Anda tidak perlu menentukan cluster_id.

Kode untuk masing-masing pendekatan ini adalah sebagai berikut:

Python

# Include the cluster_id field in your configuration profile, and then
# just specify the configuration profile's name:
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.profile("<profile-name>").getOrCreate()

Scala

// 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()

Python

# Specify the configuration profile name along with the cluster_id field.
# In this example, retrieve_cluster_id() assumes some custom implementation that
# you provide to get the cluster ID from the user or from some other
# configuration store:
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
profile    = "<profile-name>",
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// 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()

Variabel DATABRICKS_CONFIG_PROFILE lingkungan

Untuk opsi ini, buat atau identifikasi profil konfigurasi Azure Databricks yang berisi bidang cluster_id dan bidang lain yang diperlukan untuk jenis autentikasi Databricks yang ingin Anda gunakan.

Jika Anda telah mengatur DATABRICKS_CLUSTER_ID variabel lingkungan dengan ID kluster, Anda tidak perlu menentukan cluster_id.

Bidang profil konfigurasi yang diperlukan untuk setiap jenis autentikasi adalah sebagai berikut:

  • Untuk autentikasi token akses pribadi Azure Databricks: host dan token.
  • Untuk autentikasi komputer-ke-mesin (M2M) OAuth (jika didukung): host, , client_iddan client_secret.
  • Untuk autentikasi pengguna ke mesin (U2M) OAuth (jika didukung): .
  • Untuk autentikasi principal layanan Microsoft Entra ID (sebelumnya Azure Active Directory): host, azure_tenant_id, azure_client_id, azure_client_secret, dan mungkin azure_workspace_resource_id.
  • Untuk autentikasi Azure CLI: host.
  • Untuk autentikasi identitas terkelola Azure (jika didukung): host, azure_use_msi, azure_client_id, dan mungkin azure_workspace_resource_id.

Atur DATABRICKS_CONFIG_PROFILE variabel lingkungan ke nama profil konfigurasi ini. Kemudian inisialisasi kelas DatabricksSession.

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Variabel lingkungan untuk setiap properti konfigurasi

Untuk opsi ini, atur DATABRICKS_CLUSTER_ID variabel lingkungan dan variabel lingkungan lain yang diperlukan untuk jenis autentikasi Databricks yang ingin Anda gunakan.

Variabel lingkungan yang diperlukan untuk setiap jenis autentikasi adalah sebagai berikut:

  • Untuk autentikasi token akses pribadi Azure Databricks: DATABRICKS_HOST dan DATABRICKS_TOKEN.
  • Untuk autentikasi komputer-ke-mesin (M2M) OAuth (jika didukung): DATABRICKS_HOST, , DATABRICKS_CLIENT_IDdan DATABRICKS_CLIENT_SECRET.
  • Untuk autentikasi pengguna ke mesin (U2M) OAuth (jika didukung): .
  • Untuk autentikasi principal layanan Microsoft Entra ID (sebelumnya Azure Active Directory): DATABRICKS_HOST, ARM_TENANT_ID, ARM_CLIENT_ID, ARM_CLIENT_SECRET, dan mungkin DATABRICKS_AZURE_RESOURCE_ID.
  • Untuk autentikasi Azure CLI: DATABRICKS_HOST.
  • Untuk autentikasi identitas terkelola Azure (jika didukung): DATABRICKS_HOST, ARM_USE_MSI, ARM_CLIENT_ID, dan mungkin DATABRICKS_AZURE_RESOURCE_ID.

Kemudian inisialisasi kelas DatabricksSession.

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Profil konfigurasi Databricks bernama DEFAULT

Untuk opsi ini, buat atau identifikasi profil konfigurasi Azure Databricks yang berisi bidang cluster_id dan bidang lain yang diperlukan untuk jenis autentikasi Databricks yang ingin Anda gunakan.

Jika Anda telah mengatur DATABRICKS_CLUSTER_ID variabel lingkungan dengan ID kluster, Anda tidak perlu menentukan cluster_id.

Bidang profil konfigurasi yang diperlukan untuk setiap jenis autentikasi adalah sebagai berikut:

  • Untuk autentikasi token akses pribadi Azure Databricks: host dan token.
  • Untuk autentikasi komputer-ke-mesin (M2M) OAuth (jika didukung): host, , client_iddan client_secret.
  • Untuk autentikasi pengguna ke mesin (U2M) OAuth (jika didukung): .
  • Untuk autentikasi principal layanan Microsoft Entra ID (sebelumnya Azure Active Directory): host, azure_tenant_id, azure_client_id, azure_client_secret, dan mungkin azure_workspace_resource_id.
  • Untuk autentikasi Azure CLI: host.
  • Untuk autentikasi identitas terkelola Azure (jika didukung): host, azure_use_msi, azure_client_id, dan mungkin azure_workspace_resource_id.

Beri nama profil DEFAULTkonfigurasi ini .

Kemudian inisialisasi kelas DatabricksSession.

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Mengonfigurasi koneksi ke komputasi tanpa server

Dukungan untuk Databricks Connect pada Python dan Scala dalam menghubungkan ke komputasi tanpa server. Untuk menggunakan fitur ini, persyaratan versi untuk menyambungkan ke 'serverless' harus dipenuhi. Lihat Persyaratan penggunaan Databricks Connect.

Penting

Fitur ini memiliki batasan berikut ini:

Untuk Python, Anda dapat mengonfigurasi koneksi ke komputasi tanpa server di lingkungan lokal Anda:

  • Atur variabel DATABRICKS_SERVERLESS_COMPUTE_ID lingkungan lokal ke auto. Jika variabel lingkungan ini diatur, Databricks Connect mengabaikan cluster_id.

  • Di profil konfigurasi Databricks

    [DEFAULT]
    host = https://my-workspace.cloud.databricks.com/
    serverless_compute_id = auto
    token = dapi123...
    

Atau untuk Python atau Scala:

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.serverless().getOrCreate()
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.remote(serverless=True).getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder.serverless().getOrCreate()

Memeriksa koneksi ke Databricks

Untuk memvalidasi bahwa lingkungan Anda, kredensial default, dan koneksi ke komputasi disiapkan dengan benar untuk Databricks Connect, jalankan databricks-connect test perintah :

databricks-connect test

Perintah ini gagal dengan kode keluar bukan nol dan pesan kesalahan yang sesuai ketika mendeteksi ketidaksesuaian dalam penyiapan, seperti ketika versi Databricks Connect tidak kompatibel dengan versi komputasi tanpa server Databricks. Untuk informasi dukungan versi Databricks Connect, lihat Versi Databricks Connect.

Di Databricks Connect 14.3 ke atas, Anda juga dapat memvalidasi lingkungan Anda menggunakan validateSession():

DatabricksSession.builder.validateSession(True).getOrCreate()

Menonaktifkan Databricks Connect

Layanan Databricks Connect (dan Spark Connect yang mendasar) dapat dinonaktifkan pada kluster tertentu.

Untuk menonaktifkan layanan Databricks Connect, atur konfigurasi Spark berikut pada kluster.

spark.databricks.service.server.enabled false