Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengembangkan dan menguji kode alur berbeda dari beban kerja Apache Spark lainnya. Artikel ini memberikan gambaran umum tentang fungsionalitas, praktik terbaik, dan pertimbangan yang didukung saat mengembangkan kode alur. Untuk rekomendasi dan praktik terbaik lainnya, lihat Menerapkan pengembangan perangkat lunak & praktik terbaik DevOps ke alur.
Nota
Anda harus menambahkan kode sumber ke konfigurasi alur untuk memvalidasi kode atau menjalankan pembaruan. Lihat Mengonfigurasi Alur.
File apa yang valid untuk kode sumber alur?
Kode alur dapat berupa Python atau SQL. Anda dapat memiliki campuran file kode sumber Python dan SQL yang mendukung satu alur, tetapi setiap file hanya dapat berisi satu bahasa. Lihat Mengembangkan kode alur dengan Python dan Mengembangkan kode Alur Deklaratif Lakeflow Spark dengan SQL.
File sumber untuk alur disimpan di ruang kerja Anda. File ruang kerja mewakili skrip Python atau SQL yang ditulis di Editor Alur Lakeflow. Anda juga dapat mengedit file secara lokal di IDE pilihan Anda, dan menyinkronkan ke ruang kerja. Untuk informasi tentang file di ruang kerja, lihat Apa itu file ruang kerja?. Untuk informasi tentang pengeditan dengan Editor Alur Lakeflow, lihat Mengembangkan dan men-debug alur ETL dengan Editor Alur Lakeflow. Untuk informasi tentang penulisan kode di IDE lokal, lihat Mengembangkan kode alur di lingkungan pengembangan lokal Anda.
Jika Anda mengembangkan kode Python sebagai modul atau pustaka, Anda harus menginstal dan mengimpor kode lalu memanggil metode dari file Python yang dikonfigurasi sebagai kode sumber. Lihat Mengelola dependensi Python untuk alur.
Nota
Jika Anda perlu menggunakan perintah SQL arbitrer dalam notebook Python, Anda dapat menggunakan pola sintaks spark.sql("<QUERY>") untuk menjalankan SQL sebagai kode Python.
Fungsi Katalog Unity memungkinkan Anda mendaftarkan fungsi yang ditentukan pengguna Python arbitrer untuk digunakan dalam SQL. Lihat Fungsi yang ditentukan pengguna (UDF) di Unity Catalog.
Gambaran umum fitur pengembangan alur
Alur memperluas dan memanfaatkan banyak fitur pengembangan Azure Databricks serta memperkenalkan fitur dan konsep baru. Tabel berikut ini memberikan gambaran singkat tentang konsep dan fitur yang mendukung pengembangan kode alur:
| Fitur | Description |
|---|---|
| Mode pengembangan | Menjalankan alur secara interaktif (dengan memilih untuk memperbarui melalui Editor Alur Lakeflow) akan menggunakan mode pengembangan. Alur baru berjalan dengan mode pengembangan nonaktif saat berjalan secara otomatis melalui jadwal atau pemicu otomatis. Lihat Mode pengembangan. |
| Eksekusi kering | Pembaruan dry run memverifikasi kebenaran kode sumber alur tanpa menjalankan pembaruan pada tabel apa pun. Lihat Periksa alur untuk kesalahan tanpa menunggu tabel diperbarui. |
| Editor Alur Lakeflow | File Python dan SQL yang dikonfigurasi sebagai kode sumber untuk alur menyediakan opsi interaktif untuk memvalidasi kode dan menjalankan pembaruan. Lihat Mengembangkan dan men-debug alur ETL dengan Editor Alur Lakeflow. |
| Parameter-parameternya | Manfaatkan parameter dalam kode sumber dan konfigurasi alur untuk menyederhanakan pengujian dan ekstensibilitas. Lihat Menggunakan parameter dengan alur. |
| Paket Aset Databricks | Bundel Aset Databricks memungkinkan Anda memindahkan konfigurasi alur dan kode sumber antar ruang kerja. Lihat Mengonversi pipelin menjadi proyek Bundel Aset Databricks. |
Membuat himpunan data sampel untuk pengembangan dan pengujian
Databricks merekomendasikan pembuatan himpunan data pengembangan dan pengujian untuk menguji logika alur dengan data yang diharapkan dan catatan yang berpotensi cacat atau rusak. Ada beberapa cara untuk membuat himpunan data yang dapat berguna untuk pengembangan dan pengujian, termasuk yang berikut ini:
- Pilih subkumpulan data dari himpunan data produksi.
- Gunakan data yang dibuat secara anonim atau buatan untuk sumber yang berisi PII. Untuk melihat tutorial yang menggunakan
fakerpustaka untuk menghasilkan data untuk pengujian, lihat Tutorial: Membuat alur ETL menggunakan tangkapan data perubahan. - Buat data pengujian dengan hasil yang ditentukan dengan baik berdasarkan logika transformasi hilir.
- Mengantisipasi potensi kerusakan data, rekaman cacat, dan perubahan data hulu dengan membuat rekaman yang memutus ekspektasi skema data.
Misalnya, jika Anda memiliki file yang menentukan himpunan data menggunakan kode berikut:
CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
"/production/data",
format => "json")
Anda dapat membuat himpunan data sampel yang berisi subset rekaman menggunakan kueri seperti berikut ini:
CREATE OR REFRESH MATERIALIZED VIEW input_data AS
SELECT "2021/09/04" AS date, 22.4 as sensor_reading UNION ALL
SELECT "2021/09/05" AS date, 21.5 as sensor_reading
Contoh berikut menunjukkan pemfilteran data yang diterbitkan untuk membuat subset data produksi untuk pengembangan atau pengujian:
CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY
Untuk menggunakan himpunan data yang berbeda ini, buat beberapa alur dengan kode sumber yang mengimplementasikan logika transformasi. Setiap alur dapat membaca data dari himpunan input_data data tetapi dikonfigurasi untuk menyertakan file yang membuat himpunan data khusus untuk lingkungan.
Bagaimana himpunan data alur memproses data?
Tabel berikut ini menjelaskan bagaimana materialisasi tampilan, tabel streaming, dan tampilan memproses data.
| Jenis himpunan data | Bagaimana rekaman diproses melalui kueri yang ditentukan? |
|---|---|
| Tabel streaming | Setiap rekaman diproses tepat sekali. Ini mengasumsikan sumber yang hanya dapat ditambahkan. |
| Tampilan Terwujud | Rekaman diproses sesuai kebutuhan untuk mengembalikan hasil yang akurat untuk status data saat ini. Tampilan materialisasi harus digunakan untuk tugas pemrosesan data seperti transformasi, agregasi, atau pra-menghitung kueri yang lambat dan komputasi yang sering dijalankan. Hasil di-cache di antara pembaruan. |
| Tampilkan | Rekaman diproses setiap kali tampilan dikueri. Gunakan tampilan untuk transformasi menengah dan pemeriksaan kualitas data yang tidak boleh diterbitkan ke himpunan data publik. |
Deklarasikan himpunan data pertama Anda dalam pipeline
Pipeline memperkenalkan sintaks baru untuk Python dan SQL. Untuk mempelajari dasar-dasar sintaks alur, lihat Mengembangkan kode alur dengan Python dan Mengembangkan kode Alur Deklaratif Lakeflow Spark dengan SQL.
Nota
Alur memisahkan definisi himpunan data dari pemrosesan pembaruan, dan sumber alur tidak ditujukan untuk eksekusi interaktif.
Bagaimana Anda mengonfigurasi alur?
Pengaturan untuk pipeline terbagi dalam dua kategori utama:
- Konfigurasi yang menentukan kumpulan file (dikenal sebagai kode sumber) yang menggunakan sintaks alur untuk mendeklarasikan himpunan data.
- Konfigurasi yang mengontrol infrastruktur alur, manajemen dependensi, cara pembaruan diproses, dan cara tabel disimpan di ruang kerja.
Sebagian besar konfigurasi bersifat opsional, tetapi beberapa memerlukan perhatian yang cermat, terutama saat mengonfigurasi alur produksi. Ini termasuk yang berikut ini:
- Untuk membuat data tersedia di luar alur pemrosesan, Anda harus mendeklarasikan skema target untuk diterbitkan ke metastore Apache Hive atau katalog target dan skema target untuk diterbitkan ke Unity Catalog.
- Izin akses data dikonfigurasi melalui kluster yang digunakan untuk eksekusi. Pastikan kluster Anda memiliki izin yang sesuai yang dikonfigurasi untuk sumber data dan lokasi penyimpanan target, jika ditentukan.
Untuk detail tentang menggunakan Python dan SQL untuk menulis kode sumber untuk alur, lihat Referensi bahasa Pipeline SQL dan referensi bahasa Lakeflow Spark Declarative Pipelines Python.
Untuk informasi selengkapnya tentang pengaturan dan konfigurasi alur, lihat Mengonfigurasi Alur.
Terapkan alur pertama Anda dan picu pembaruan
Untuk memproses data dengan SDP, konfigurasikan alur. Setelah alur dikonfigurasi, Anda dapat memicu pembaruan untuk menghitung hasil untuk setiap himpunan data di alur Anda. Untuk mulai menggunakan pipeline, lihat Tutorial: Membuat pipeline ETL menggunakan pengambilan data perubahan.
Apa itu pembaruan alur kerja?
Pipeline menyebarkan infrastruktur dan menghitung ulang status data saat Anda memulai pembaruan . Pembaruan melakukan hal berikut:
- Memulai kluster dengan konfigurasi yang benar.
- Menemukan semua tabel dan tampilan yang ditentukan dan memeriksa kesalahan analisis apa pun seperti nama kolom yang tidak valid, dependensi yang hilang, dan kesalahan sintaksis.
- Membuat atau memperbarui tabel dan tampilan dengan data terbaru yang tersedia.
Alur dapat dijalankan terus menerus atau sesuai jadwal tergantung pada persyaratan biaya dan latensi kasus penggunaan Anda. Lihat Menjalankan pembaruan alur.
Menyerap data dengan alur
Pipeline mendukung semua sumber data yang tersedia di Azure Databricks.
Databricks merekomendasikan penggunaan tabel streaming untuk sebagian besar kasus penggunaan pemrosesan data masuk. Untuk file yang tiba di penyimpanan objek cloud, Databricks merekomendasikan Auto Loader. Anda dapat langsung mengimpor data melalui jalur dari sebagian besar pengantar pesan.
Untuk informasi selengkapnya tentang mengonfigurasi akses ke penyimpanan cloud, lihat Konfigurasi penyimpanan cloud.
Untuk format yang tidak didukung oleh Auto Loader, Anda dapat menggunakan Python atau SQL untuk mengkueri format apa pun yang didukung oleh Apache Spark. Lihat Memuat data dalam alur.
Memantau dan menerapkan kualitas data
Anda dapat menggunakan ekspektasi untuk menentukan kontrol kualitas data pada konten himpunan data. Tidak seperti pembatas CHECK dalam database tradisional yang mencegah penambahan catatan apa pun yang gagal memenuhi batasan, ekspektasi menyediakan fleksibilitas saat memproses data yang gagal dalam persyaratan kualitas data. Fleksibilitas ini memungkinkan Anda memproses dan menyimpan data yang Anda duga akan berantakan dan data yang harus memenuhi persyaratan kualitas yang ketat. Lihat Mengelola kualitas data dengan ekspektasi alur kerja.
Bagaimana alur Deklaratif Lakeflow Spark dan Delta Lake terkait?
SDP memperluas fungsionalitas Delta Lake. Karena tabel yang dibuat dan dikelola oleh alur adalah tabel Delta, tabel tersebut memiliki jaminan dan fitur yang sama yang disediakan oleh Delta Lake. Lihat Apa itu Delta Lake di Azure Databricks?.
Pipelines menambahkan beberapa properti tabel selain dari banyak properti tabel yang dapat diatur di Delta Lake. Lihat Referensi properti alur dan Referensi properti tabel.
Bagaimana tabel dibuat dan dikelola oleh pipeline
Azure Databricks secara otomatis mengelola tabel yang dibuat oleh alur, menentukan bagaimana pembaruan perlu diproses untuk menghitung status tabel saat ini dengan benar dan melakukan sejumlah tugas pemeliharaan dan pengoptimalan.
Untuk sebagian besar operasi, Anda harus mengizinkan alur memproses semua pembaruan, penyisipan, dan penghapusan ke tabel target. Untuk detail dan batasan, lihat Menyimpan penghapusan atau pembaruan manual.
Tugas pemeliharaan yang dilakukan oleh alur
Azure Databricks melakukan tugas pemeliharaan pada tabel yang dikelola oleh alur pada irama optimal menggunakan pengoptimalan prediktif. Pemeliharaan dapat meningkatkan performa kueri dan mengurangi biaya dengan menghapus versi tabel lama. Ini termasuk operasi OPTIMIZE dan VACUUM penuh. Tugas pemeliharaan dilakukan sesuai jadwal yang diputuskan oleh pengoptimalan prediktif, dan hanya jika pembaruan alur telah berjalan sejak pemeliharaan sebelumnya.
Untuk memahami seberapa sering pengoptimalan prediktif berjalan, dan untuk memahami biaya pemeliharaan, lihat Referensi tabel sistem pengoptimalan prediktif.
Keterbatasan
Untuk daftar batasan, lihat Batasan Alur.
Untuk daftar persyaratan dan batasan yang spesifik terkait penggunaan pipeline dengan Unity Catalog, lihat Menggunakan Unity Catalog dengan pipeline
Sumber daya tambahan
- Pipelin memiliki dukungan penuh di Databricks REST API. Lihat Pipelines REST API.
- Untuk pengaturan alur dan tabel, lihat Referensi properti alur.
- Referensi bahasa pipeline SQL.
- Lakeflow Spark Declarative Pipelines referensi bahasa Python.