Penggunaan lanjutan Databricks Connect

Nota

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

Artikel ini menjelaskan topik yang melampaui penyiapan dasar Databricks Connect.

Konfigurasikan 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.

Nota

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

Phyton

Untuk mengatur string koneksi menggunakan remote fungsi :

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 kelas DatabricksSession.

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

Atur SPARK_REMOTE variabel lingkungan:

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

Kemudian inisialisasi kelas DatabricksSession.

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder.getOrCreate()

Menggunakan server Spark Connect dengan Databricks Connect

Anda dapat secara opsional menjalankan Databricks Connect terhadap server Spark Connect sumber terbuka.

Penting

Beberapa fitur yang tersedia di Databricks Runtime dan Databricks Connect eksklusif untuk Databricks atau belum dirilis di Apache Spark sumber terbuka. Jika kode Anda bergantung pada fitur-fitur ini, langkah-langkah berikut mungkin gagal dengan kesalahan.

  1. Mulai server Spark Connect lokal. Lihat Cara menggunakan Spark Connect

  2. Mengonfigurasi Databricks Connect. Atur variabel SPARK_REMOTE lingkungan untuk menunjuk ke server Spark Connect lokal Anda. Lihat Menyambungkan ke Spark Connect menggunakan Klien.

    export SPARK_REMOTE="sc://localhost"
    
  3. Inisialisasi sesi Databricks:

    Phyton

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

    Scala

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

Header HTTP tambahan

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

Untuk memiliki kontrol yang lebih baik atas permintaan yang berasal dari klien, pengguna tingkat lanjut dapat memilih untuk menginstal layanan proksi antara klien dan kluster Azure Databricks. Dalam beberapa kasus, proksi mungkin memerlukan header kustom dalam permintaan HTTP.

Gunakan metode header() untuk menambahkan header kustom ke permintaan HTTP:

Phyton

from databricks.connect import DatabricksSession

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

Scala

import com.databricks.connect.DatabricksSession

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

Certificates

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

Phyton

Contoh berikut mengatur variabel lingkungan ini:

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.

Scala

Java dan Scala tidak menawarkan cara untuk mengonfigurasi variabel lingkungan secara terprogram. Lihat sistem operasi atau dokumentasi IDE Anda untuk informasi tentang cara mengonfigurasinya sebagai bagian dari aplikasi Anda.

Pencatatan dan log debug

Phyton

Databricks Connect for Python menghasilkan log menggunakan pengelogan Python standar.

Log dipancarkan ke aliran kesalahan standar (stderr) dan secara default dinonaktifkan. Mengatur variabel lingkungan SPARK_CONNECT_LOG_LEVEL=debug akan mengubah pengaturan standar ini dan menampilkan semua pesan log pada tingkat DEBUG dan lebih tinggi.

Scala

Databricks Connect for Scala menggunakan pengelogan SLF4J , dan tidak dikirim dengan penyedia SLF4J apa pun.

Aplikasi yang menggunakan Databricks Connect diharapkan menyertakan penyedia SLF4J, dan dalam beberapa kasus, dikonfigurasi untuk mencetak pesan log.

  • Opsi paling sederhana adalah menyertakan penyedia slf4j-simple yang mencetak pesan log pada INFO tingkat dan lebih tinggi ke aliran kesalahan standar (stderr).
  • Alternatif yang lebih dapat dikonfigurasi adalah menggunakan penyedia slf4j-reload4j yang mengambil konfigurasi dari log4j.properties file di classpath.

Contoh berikut menunjukkan file sederhana log4j.properties .

log4j.rootLogger=INFO,stderr

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p\t%d{ISO8601}\t%r\t%c\t[%t]\t%m%n

Dalam contoh sebelumnya, log debug dicetak jika logger utama (atau logger tertentu) dikonfigurasi pada DEBUG tingkat:

log4j.rootLogger=DEBUG,stderr