Bagikan melalui


Menggunakan Konektor Apache Spark untuk SQL Server dan Azure SQL

Important

Kluster Big Data Microsoft SQL Server 2019 dihentikan. Dukungan untuk Kluster Big Data SQL Server 2019 berakhir per 28 Februari 2025. Untuk informasi selengkapnya, lihat posting blog pengumuman dan Opsi big data di platform Microsoft SQL Server.

Konektor Apache Spark untuk SQL Server dan Azure SQL adalah konektor berperforma tinggi yang memungkinkan Anda menggunakan data transaksional dalam analitik big data dan mempertahankan hasil untuk kueri atau pelaporan ad hoc. Konektor memungkinkan Anda menggunakan database SQL, lokal, atau di cloud, sebagai sumber data input atau sink data output untuk pekerjaan Spark. Konektor menggunakan API tulis massal SQL Server. Parameter tulis massal apa pun dapat diteruskan sebagai parameter opsional oleh pengguna dan diteruskan as-is oleh konektor ke API yang mendasar. Untuk informasi selengkapnya tentang operasi penulisan massal, lihat Menggunakan salinan massal dengan driver JDBC.

Konektor disertakan secara default dalam Kluster Big Data SQL Server.

Pelajari selengkapnya tentang konektor di repositori sumber terbuka. Misalnya, lihat sampel.

Menulis ke Tabel SQL baru

Caution

Dalam overwrite mode, konektor terlebih dahulu menghilangkan tabel jika sudah ada di database secara default. Gunakan opsi ini dengan berhati-hati untuk menghindari kehilangan data yang tidak terduga.

Saat menggunakan mode overwrite jika Anda tidak menggunakan opsi truncate, pada pembuatan ulang tabel, indeks akan hilang. Misalnya, tabel penyimpan kolom menjadi timbunan. Jika Anda ingin mempertahankan pengindeksan yang ada, tentukan juga opsi truncate dengan nilai true. Misalnya .option("truncate",true)

server_name = "jdbc:sqlserver://{SERVER_ADDR}"
database_name = "database_name"
url = server_name + ";" + "databaseName=" + database_name + ";"

table_name = "table_name"
username = "username"
password = "password123!#" # Please specify password here

try:
  df.write \
    .format("com.microsoft.sqlserver.jdbc.spark") \
    .mode("overwrite") \
    .option("url", url) \
    .option("dbtable", table_name) \
    .option("user", username) \
    .option("password", password) \
    .save()
except ValueError as error :
    print("Connector write failed", error)

Tambahkan ke Tabel SQL

try:
  df.write \
    .format("com.microsoft.sqlserver.jdbc.spark") \
    .mode("append") \
    .option("url", url) \
    .option("dbtable", table_name) \
    .option("user", username) \
    .option("password", password) \
    .save()
except ValueError as error :
    print("Connector write failed", error)

Tentukan tingkat isolasi

Konektor ini secara default menggunakan tingkat isolasi READ_COMMITTED saat melakukan penyisipan massal ke dalam database. Jika Anda ingin mengambil alih ini ke tingkat isolasi lain, silakan gunakan opsi seperti yang ditunjukkan mssqlIsolationLevel di bawah ini.

    .option("mssqlIsolationLevel", "READ_UNCOMMITTED") \

Baca dari Tabel SQL

jdbcDF = spark.read \
        .format("com.microsoft.sqlserver.jdbc.spark") \
        .option("url", url) \
        .option("dbtable", table_name) \
        .option("user", username) \
        .option("password", password).load()

Mode Non-Direktori Aktif

Dalam keamanan mode non-Direktori Aktif, setiap pengguna memiliki nama pengguna dan kata sandi yang perlu disediakan sebagai parameter selama instansiasi konektor untuk melakukan baca dan/atau tulis.

Contoh instansiasi konektor untuk mode non-Active Directory ada di bawah ini. Sebelum Anda menjalankan skrip, ganti ? dengan nilai untuk akun Anda.

# Note: '?' is a placeholder for a necessary user-specified value
connector_type = "com.microsoft.sqlserver.jdbc.spark" 

url = "jdbc:sqlserver://master-p-svc;databaseName=?;"
writer = df.write \ 
   .format(connector_type)\ 
   .mode("overwrite") 
   .option("url", url) \ 
   .option("user", ?) \ 
   .option("password",?) 
writer.save() 

Mode Direktori Aktif

Dalam keamanan mode Direktori Aktif, setelah pengguna membuat file tab kunci, pengguna perlu menyediakan principal parameter dan keytab sebagai selama instans konektor.

Dalam mode ini, driver memuat file keytab ke kontainer pelaksana masing-masing. Kemudian, pelaksana menggunakan nama utama dan keytab untuk menghasilkan token yang digunakan untuk membuat konektor JDBC untuk baca/tulis.

Contoh instansiasi konektor untuk mode Direktori Aktif ada di bawah ini. Sebelum Anda menjalankan skrip, ganti ? dengan nilai untuk akun Anda.

# Note: '?' is a placeholder for a necessary user-specified value
connector_type = "com.microsoft.sqlserver.jdbc.spark"

url = "jdbc:sqlserver://master-p-svc;databaseName=?;integratedSecurity=true;authenticationScheme=JavaKerberos;" 
writer = df.write \ 
   .format(connector_type)\ 
   .mode("overwrite") 
   .option("url", url) \ 
   .option("principal", ?) \ 
   .option("keytab", ?)   

writer.save() 

Next steps

Untuk informasi selengkapnya tentang kluster big data, lihat Cara menyebarkan Kluster Big Data SQL Server di Kubernetes

Memiliki umpan balik atau rekomendasi fitur untuk Kluster Big Data SQL Server? Tinggalkan catatan di Umpan Balik Kluster Big Data SQL Server.