Bagikan melalui


Referensi bahasa Python Lakeflow Spark Declarative Pipelines

Bagian ini memiliki detail untuk antarmuka pemrograman Python Lakeflow Spark Declarative Pipelines (SDP).

pipelines gambaran umum modul

Fungsi Python Alur Deklaratif Lakeflow Spark didefinisikan dalam pyspark.pipelines modul (diimpor sebagai dp). Alur Anda yang diimplementasikan dengan Python API harus mengimpor modul ini:

from pyspark import pipelines as dp

Nota

Modul pipeline hanya tersedia dalam konteks pipeline. Fitur ini tidak tersedia di Python yang berjalan di luar konteks pipeline. Untuk informasi selengkapnya tentang mengedit kode alur, lihat Mengembangkan dan men-debug alur ETL dengan Editor Alur Lakeflow.

Alur Apache Spark™

Apache Spark mencakup alur deklaratif yang dimulai di Spark 4.1, tersedia melalui pyspark.pipelines modul. Databricks Runtime memperluas kemampuan sumber terbuka ini dengan API dan integrasi tambahan untuk penggunaan produksi terkelola.

Kode yang ditulis dengan modul sumber pipelines terbuka berjalan tanpa modifikasi pada Azure Databricks. Fitur berikut bukan bagian dari Apache Spark:

  • dp.create_auto_cdc_flow
  • dp.create_auto_cdc_from_snapshot_flow
  • @dp.expect(...)
  • @dp.temporary_view

pipelines Modul sebelumnya dipanggil dlt di Azure Databricks. Untuk detail lebih lanjut, dan informasi selengkapnya tentang perbedaan dari Apache Spark, lihat Apa yang terjadi dengan @dlt?.

Fungsi untuk definisi himpunan data

Pipeline menggunakan dekorator Python untuk menentukan himpunan data seperti tampilan materialisasi dan tabel streaming. Lihat Fungsi untuk menentukan himpunan data.

Referensi Antarmuka Pemrograman Aplikasi (API)

Pertimbangan untuk alur Python

Berikut ini adalah pertimbangan penting saat Anda menerapkan alur dengan antarmuka Python Lakeflow Spark Declarative Pipelines (SDP):

  • SDP mengevaluasi kode yang menentukan alur beberapa kali selama perencanaan dan eksekusi alur. Fungsi Python yang menentukan himpunan data hanya boleh menyertakan kode yang diperlukan untuk menentukan tabel atau tampilan. Logika Python arbitrer yang disertakan dalam definisi himpunan data dapat menyebabkan perilaku yang tidak terduga.
  • Jangan mencoba menerapkan logika pemantauan kustom dalam definisi himpunan data Anda. Lihat Menentukan pemantauan kustom alur dengan kait peristiwa.
  • Fungsi yang digunakan untuk menentukan himpunan data harus mengembalikan Spark DataFrame. Jangan sertakan logika dalam definisi himpunan data Anda yang tidak terkait dengan DataFrame yang dikembalikan.
  • Jangan pernah menggunakan metode yang menyimpan atau menulis ke file atau tabel sebagai bagian dari kode himpunan data alur Anda.

Contoh operasi Apache Spark yang tidak boleh digunakan dalam kode alur:

  • collect()
  • count()
  • toPandas()
  • save()
  • saveAsTable()
  • start()
  • toTable()

Apa yang terjadi dengan @dlt?

Sebelumnya, Azure Databricks menggunakan dlt modul untuk mendukung fungsionalitas alur. Modul dlt telah digantikan oleh pyspark.pipelines modul. Anda mungkin masih menggunakan dlt, tetapi Databricks merekomendasikan penggunaan pipelines.

Perbedaan antara DLT, SDP, dan Apache Spark

Tabel berikut menunjukkan perbedaan sintaksis dan fungsionalitas antara DLT, Alur Deklaratif Lakeflow Spark, dan Alur Deklaratif Apache Spark.

Area Sintaks DLT Sintaks SDP (Lakeflow dan Apache, jika berlaku) Tersedia di Apache Spark
Impor import dlt from pyspark import pipelines (as dp, opsional) Yes
Tabel streaming @dlt.table dengan dataframe streaming @dp.table Yes
Tampilan Terwujud @dlt.table dengan kerangka data batch @dp.materialized_view Yes
Tampilkan @dlt.view @dp.temporary_view Yes
Tambahkan alur @dlt.append_flow @dp.append_flow Yes
SQL – streaming CREATE STREAMING TABLE ... CREATE STREAMING TABLE ... Yes
SQL – terwujud CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ... Yes
SQL – aliran proses CREATE FLOW ... CREATE FLOW ... Yes
Catatan peristiwa spark.read.table("event_log") spark.read.table("event_log") Tidak.
Terapkan Perubahan (CDC) dlt.apply_changes(...) dp.create_auto_cdc_flow(...) Tidak.
Expectations @dlt.expect(...) dp.expect(...) Tidak.
Mode berkelanjutan Konfigurasi pipa dengan pemicu berkesinambungan (sama) Tidak.
Wastafel @dlt.create_sink(...) dp.create_sink(...) Yes