Bagikan melalui


Penggunaan lanjutan Databricks Connect untuk Python

Catatan

Artikel ini membahas Databricks Connect untuk Databricks Runtime 14.0 ke atas.

Artikel ini menjelaskan topik yang melampaui penyiapan dasar Databricks Connect.

Mengonfigurasi string koneksi Spark Connect

Selain menyambungkan ke kluster Anda menggunakan opsi yang diuraikan dalam Mengonfigurasi koneksi ke kluster, opsi yang lebih canggih adalah menyambungkan menggunakan string koneksi Spark Connect. Anda dapat meneruskan string dalam remote fungsi atau mengatur SPARK_REMOTE variabel lingkungan.

Catatan

Anda hanya dapat menggunakan autentikasi token akses pribadi Databricks untuk terhubung menggunakan string koneksi Spark Connect.

Untuk mengatur string koneksi menggunakan remote fungsi :

# Set the Spark Connect connection string in DatabricksSession.builder.remote.
from databricks.connect import DatabricksSession

workspace_instance_name = retrieve_workspace_instance_name()
token                   = retrieve_token()
cluster_id              = retrieve_cluster_id()

spark = DatabricksSession.builder.remote(
   f"sc://{workspace_instance_name}:443/;token={token};x-databricks-cluster-id={cluster_id}"
).getOrCreate()

Atau, atur SPARK_REMOTE variabel lingkungan:

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

Kemudian inisialisasi DatabricksSession kelas sebagai berikut:

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Shell Pyspark

Databricks Connect untuk Python dikirim dengan pyspark biner yang merupakan PySpark REPL (shell Spark) yang dikonfigurasi untuk menggunakan Databricks Connect. REPL dapat dimulai dengan menjalankan:

pyspark

Ketika dimulai tanpa parameter tambahan, ia mengambil kredensial default dari lingkungan (misalnya., DATABRICKS_ variabel lingkungan atau DEFAULT profil konfigurasi) untuk terhubung ke kluster Azure Databricks.

Setelah REPL dimulai, spark objek tersedia dikonfigurasi untuk menjalankan perintah Apache Spark pada kluster Databricks.

>>> spark.range(3).show()
+---+
| id|
+---+
|  0|
|  1|
|  2|
+---+

REPL dapat dikonfigurasi untuk terhubung ke jarak jauh yang berbeda dengan mengonfigurasi --remote parameter dengan string koneksi sambungkan Spark.

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

Untuk menghentikan shell, tekan Ctrl + d atau Ctrl + z, atau jalankan perintah quit() atau exit().

Header HTTP tambahan

Databricks Connect berkomunikasi dengan Kluster Databricks melalui gRPC melalui HTTP/2.

Beberapa pengguna tingkat lanjut dapat memilih untuk menginstal layanan proksi antara klien dan kluster Azure Databricks, untuk memiliki kontrol yang lebih baik atas permintaan yang berasal dari klien mereka.

Proksi, dalam beberapa kasus, mungkin memerlukan header kustom dalam permintaan HTTP.

Metode headers() ini dapat digunakan untuk menambahkan header kustom ke permintaan HTTP mereka.

spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()

Sertifikat

Jika kluster Anda bergantung pada sertifikat SSL/TLS kustom untuk menyelesaikan ruang kerja Azure Databricks nama domain yang sepenuhnya memenuhi syarat (FQDN), Anda harus mengatur variabel GRPC_DEFAULT_SSL_ROOTS_FILE_PATH lingkungan pada komputer pengembangan lokal Anda. Variabel lingkungan ini harus diatur ke jalur lengkap ke sertifikat yang diinstal pada kluster.

Misalnya, Anda mengatur variabel lingkungan ini dalam kode Python sebagai berikut:

import os

os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"

Untuk cara lain untuk mengatur variabel lingkungan, lihat dokumentasi sistem operasi Anda.

Log pengelogan dan debug

Databricks Connect for Python menghasilkan log menggunakan pengelogan Python standar.

Log dipancarkan ke aliran kesalahan standar (stderr) dan secara default hanya log pada tingkat WARN dan yang lebih tinggi yang dipancarkan.

Mengatur variabel SPARK_CONNECT_LOG_LEVEL=debug lingkungan akan mengubah default ini dan mencetak semua pesan log pada tingkat dan yang DEBUG lebih tinggi.