Tutorial: Menjalankan alur Tabel Langsung Delta pertama Anda
Tutorial ini menunjukkan kepada Anda cara mengonfigurasi alur Tabel Langsung Delta dari kode dalam buku catatan Databricks dan menjalankan alur dengan memicu pembaruan alur. Tutorial ini mencakup contoh alur untuk menyerap dan memproses himpunan data sampel dengan contoh kode menggunakan antarmuka Python dan SQL . Anda juga dapat menggunakan instruksi dalam tutorial ini untuk membuat alur dengan notebook apa pun dengan sintaks Tabel Langsung Delta yang ditentukan dengan benar.
Anda dapat mengonfigurasi alur Delta Live Tables dan memicu pembaruan menggunakan antarmuka pengguna ruang kerja Azure Databricks atau opsi alat otomatis seperti API, CLI, Bundel Aset Databricks, atau sebagai tugas dalam alur kerja Databricks. Untuk membiasakan diri dengan fungsionalitas dan fitur Tabel Langsung Delta, Databricks merekomendasikan terlebih dahulu menggunakan UI untuk membuat dan menjalankan alur. Selain itu, saat Anda mengonfigurasi alur di UI, Tabel Langsung Delta menghasilkan konfigurasi JSON untuk alur Anda yang dapat digunakan untuk mengimplementasikan alur kerja terprogram Anda.
Untuk menunjukkan fungsionalitas Tabel Langsung Delta, contoh dalam tutorial ini mengunduh himpunan data yang tersedia untuk umum. Namun, Databricks memiliki beberapa cara untuk terhubung ke sumber data dan menyerap data yang akan digunakan alur yang menerapkan kasus penggunaan dunia nyata. Lihat Menyerap data dengan Tabel Langsung Delta.
Persyaratan
Untuk memulai alur, Anda harus memiliki izin pembuatan kluster atau akses ke kebijakan kluster yang menentukan kluster Tabel Langsung Delta. Runtime Delta Live Tables membuat kluster sebelum menjalankan alur Anda dan gagal jika Anda tidak memiliki izin yang benar.
Untuk menggunakan contoh dalam tutorial ini, ruang kerja Anda harus mengaktifkan Katalog Unity.
Anda harus memiliki izin berikut di Katalog Unity:
READ VOLUME
danWRITE VOLUME
, atauALL PRIVILEGES
, untukmy-volume
volume.USE SCHEMA
atauALL PRIVILEGES
untukdefault
skema.USE CATALOG
atauALL PRIVILEGES
untukmain
katalog.
Untuk mengatur izin ini, lihat administrator Databricks atau hak istimewa Unity Catalog dan objek yang dapat diamankan.
Contoh dalam tutorial ini menggunakan volume Katalog Unity untuk menyimpan data sampel. Untuk menggunakan contoh ini, buat volume dan gunakan katalog, skema, dan nama volume volume tersebut untuk mengatur jalur volume yang digunakan oleh contoh.
Catatan
Jika ruang kerja Anda tidak mengaktifkan Katalog Unity, buku catatan dengan contoh yang tidak memerlukan Katalog Unity dilampirkan ke artikel ini. Untuk menggunakan contoh ini, pilih Hive metastore
sebagai opsi penyimpanan saat Anda membuat alur.
Di mana Anda menjalankan kueri Delta Live Tables?
Kueri Tabel Langsung Delta terutama diimplementasikan di buku catatan Databricks, tetapi Tabel Langsung Delta tidak dirancang untuk dijalankan secara interaktif di sel buku catatan. Menjalankan sel yang berisi sintaks Tabel Langsung Delta dalam buku catatan Databricks menghasilkan pesan kesalahan. Untuk menjalankan kueri, Anda harus mengonfigurasi buku catatan Anda sebagai bagian dari alur.
Penting
- Anda tidak dapat mengandalkan urutan eksekusi sel demi sel buku catatan saat menulis kueri untuk Tabel Langsung Delta. Tabel Langsung Delta mengevaluasi dan menjalankan semua kode yang ditentukan dalam buku catatan tetapi memiliki model eksekusi yang berbeda dari buku catatan Jalankan semua perintah.
- Anda tidak dapat mencampur bahasa dalam satu file kode sumber Tabel Langsung Delta. Misalnya, buku catatan hanya boleh berisi kueri Python atau kueri SQL. Jika Anda harus menggunakan beberapa bahasa dalam alur, gunakan beberapa buku catatan atau file khusus bahasa dalam alur.
Anda juga dapat menggunakan kode Python yang disimpan dalam file. Misalnya, Anda dapat membuat modul Python yang dapat diimpor ke alur Python Anda atau menentukan fungsi yang ditentukan pengguna (UDF) Python untuk digunakan dalam kueri SQL. Untuk mempelajari tentang mengimpor modul Python, lihat Mengimpor modul Python dari folder Git atau file ruang kerja. Untuk mempelajari tentang menggunakan UDF Python, lihat Fungsi skalar yang ditentukan pengguna - Python.
Contoh: Menyerap dan memproses data nama bayi New York
Contoh dalam artikel ini menggunakan himpunan data yang tersedia untuk umum yang berisi catatan nama bayi Status New York. Contoh-contoh ini menunjukkan menggunakan alur Delta Live Tables untuk:
- Baca data CSV mentah dari himpunan data yang tersedia untuk umum ke dalam tabel.
- Baca catatan dari tabel data mentah dan gunakan ekspektasi Delta Live Tables untuk membuat tabel baru yang berisi data yang dibersihkan.
- Gunakan rekaman yang dibersihkan sebagai input ke kueri Tabel Langsung Delta yang membuat himpunan data turunan.
Kode ini menunjukkan contoh arsitektur medali yang disederhanakan. Lihat Apa itu arsitektur medallion lakehouse?.
Implementasi contoh ini disediakan untuk antarmuka Python dan SQL . Anda bisa mengikuti langkah-langkah untuk membuat buku catatan baru yang berisi kode contoh, atau Anda bisa melompat ke depan untuk Membuat alur dan menggunakan salah satu buku catatan yang disediakan di halaman ini.
Menerapkan alur Delta Live Tables dengan Python
Kode Python yang membuat himpunan data Tabel Langsung Delta harus mengembalikan DataFrames. Untuk pengguna yang tidak terbiasa dengan Python dan DataFrames, Databricks merekomendasikan penggunaan antarmuka SQL. Lihat Menerapkan alur Delta Live Tables dengan SQL.
Semua API Python Tabel Langsung Delta diimplementasikan dalam dlt
modul. Kode alur Tabel Langsung Delta Anda yang diterapkan dengan Python harus secara eksplisit mengimpor dlt
modul di bagian atas buku catatan dan file Python. Tabel Langsung Delta berbeda dari banyak skrip Python dengan cara kunci: Anda tidak memanggil fungsi yang melakukan penyerapan dan transformasi data untuk membuat himpunan data Tabel Langsung Delta. Sebagai gantinya, Delta Live Tables menginterpretasikan fungsi dekorator dari dlt
modul di semua file yang dimuat ke dalam alur dan membangun grafik aliran data.
Untuk menerapkan contoh dalam tutorial ini, salin dan tempel kode Python berikut ke dalam notebook Python baru. Tambahkan setiap contoh cuplikan kode ke selnya sendiri di buku catatan dalam urutan yang dijelaskan. Untuk meninjau opsi untuk membuat buku catatan, lihat Membuat buku catatan.
Saat Anda membuat alur dengan antarmuka Python, secara default, nama tabel ditentukan oleh nama fungsi. Misalnya, contoh Python berikut membuat tiga tabel bernama baby_names_raw
, , baby_names_prepared
dan top_baby_names_2021
. Anda dapat mengambil alih nama tabel menggunakan name
parameter . Lihat Membuat tampilan terwujud atau tabel streaming Tabel Langsung Delta.
Penting
Untuk menghindari perilaku tak terduga saat alur Anda berjalan, jangan sertakan kode yang mungkin memiliki efek samping dalam fungsi Anda yang menentukan himpunan data. Untuk mempelajari selengkapnya, lihat referensi Python.
Mengimpor modul Delta Live Tables
Semua API Python Tabel Langsung Delta diimplementasikan dalam dlt
modul. Impor dlt
modul secara eksplisit di bagian atas buku catatan dan file Python.
Contoh berikut menunjukkan impor ini, bersama dengan pernyataan impor untuk pyspark.sql.functions
.
import dlt
from pyspark.sql.functions import *
Unduh data
Untuk mendapatkan data untuk contoh ini, Anda mengunduh file CSV dan menyimpannya dalam volume sebagai berikut:
import os
os.environ["UNITY_CATALOG_VOLUME_PATH"] = "/Volumes/<catalog-name>/<schema-name>/<volume-name>/"
os.environ["DATASET_DOWNLOAD_URL"] = "https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv"
os.environ["DATASET_DOWNLOAD_FILENAME"] = "rows.csv"
dbutils.fs.cp(f"{os.environ.get('DATASET_DOWNLOAD_URL')}", f"{os.environ.get('UNITY_CATALOG_VOLUME_PATH')}{os.environ.get('DATASET_DOWNLOAD_FILENAME')}")
Ganti <catalog-name>
, <schema-name>
, dan <volume-name>
dengan katalog, skema, dan nama volume untuk volume Katalog Unity.
Membuat tabel dari file di penyimpanan objek
Tabel Langsung Delta mendukung pemuatan data dari semua format yang didukung oleh Azure Databricks. Lihat Opsi format data.
Dekorator @dlt.table
memberi tahu Delta Live Tables untuk membuat tabel yang berisi hasil yang DataFrame
dikembalikan oleh fungsi. @dlt.table
Tambahkan dekorator sebelum definisi fungsi Python yang mengembalikan Spark DataFrame untuk mendaftarkan tabel baru di Tabel Langsung Delta. Contoh berikut menunjukkan menggunakan nama fungsi sebagai nama tabel dan menambahkan komentar deskriptif ke tabel:
@dlt.table(
comment="Popular baby first names in New York. This data was ingested from the New York State Department of Health."
)
def baby_names_raw():
df = spark.read.csv(f"{os.environ.get('UNITY_CATALOG_VOLUME_PATH')}{os.environ.get('DATASET_DOWNLOAD_FILENAME')}", header=True, inferSchema=True)
df_renamed_column = df.withColumnRenamed("First Name", "First_Name")
return df_renamed_column
Menambahkan tabel dari himpunan data upstram di alur
Anda dapat menggunakan dlt.read()
untuk membaca data dari himpunan data lain yang dideklarasikan dalam alur Delta Live Tables Anda saat ini. Mendeklarasikan tabel baru dengan cara ini membuat dependensi yang diselesaikan secara otomatis oleh Tabel Langsung Delta sebelum menjalankan pembaruan. Kode berikut juga mencakup contoh pemantauan dan menegakkan kualitas data dengan harapan. Lihat Mengelola kualitas data dengan Tabel Langsung Delta.
@dlt.table(
comment="New York popular baby first name data cleaned and prepared for analysis."
)
@dlt.expect("valid_first_name", "First_Name IS NOT NULL")
@dlt.expect_or_fail("valid_count", "Count > 0")
def baby_names_prepared():
return (
dlt.read("baby_names_raw")
.withColumnRenamed("Year", "Year_Of_Birth")
.select("Year_Of_Birth", "First_Name", "Count")
)
Membuat tabel dengan tampilan data yang diperkaya
Karena Tabel Langsung Delta memproses pembaruan untuk alur sebagai serangkaian grafik dependensi, Anda dapat mendeklarasikan tampilan yang sangat diperkaya yang mendukung dasbor, BI, dan analitik dengan mendeklarasikan tabel dengan logika bisnis tertentu.
Tabel dalam Tabel Langsung Delta setara secara konseptual dengan tampilan materialisasi. Tidak seperti tampilan tradisional pada Spark yang menjalankan logika setiap kali tampilan dikueri, tabel Tabel Langsung Delta menyimpan versi terbaru hasil kueri dalam file data. Karena Tabel Langsung Delta mengelola pembaruan untuk semua himpunan data dalam alur, Anda dapat menjadwalkan pembaruan alur agar sesuai dengan persyaratan latensi untuk tampilan materialisasi dan mengetahui bahwa kueri terhadap tabel ini berisi versi data terbaru yang tersedia.
Tabel yang ditentukan oleh kode berikut menunjukkan kesamaan konseptual dengan tampilan materialisasi yang berasal dari data hulu di alur Anda:
@dlt.table(
comment="A table summarizing counts of the top baby names for New York for 2021."
)
def top_baby_names_2021():
return (
dlt.read("baby_names_prepared")
.filter(expr("Year_Of_Birth == 2021"))
.groupBy("First_Name")
.agg(sum("Count").alias("Total_Count"))
.sort(desc("Total_Count"))
.limit(10)
)
Untuk mengonfigurasi alur yang menggunakan buku catatan, lihat Membuat alur.
Menerapkan alur Delta Live Tables dengan SQL
Databricks merekomendasikan Delta Live Tables dengan SQL sebagai cara yang disukai bagi pengguna SQL untuk membangun alur ETL, penyerapan, dan transformasi baru di Azure Databricks. Antarmuka SQL untuk Tabel Langsung Delta memperluas Spark SQL standar dengan banyak kata kunci, konstruksi, dan fungsi bernilai tabel baru. Penambahan SQL standar ini memungkinkan pengguna untuk mendeklarasikan dependensi antara himpunan data dan menyebarkan infrastruktur tingkat produksi tanpa mempelajari alat baru atau konsep tambahan.
Bagi pengguna yang terbiasa dengan Spark DataFrames dan yang membutuhkan dukungan untuk pengujian dan operasi yang lebih luas yang sulit diterapkan dengan SQL, seperti operasi metaprogram, Databricks merekomendasikan penggunaan antarmuka Python. Lihat Menerapkan alur Tabel Langsung Delta dengan Python.
Unduh data
Untuk mendapatkan data untuk contoh ini, salin kode berikut, tempelkan ke buku catatan baru, lalu jalankan buku catatan. Untuk meninjau opsi untuk membuat buku catatan, lihat Membuat buku catatan.
%sh
wget -O "/Volumes/<catalog-name>/<schema-name>/<volume-name>/babynames.csv" "https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv"
Ganti <catalog-name>
, <schema-name>
, dan <volume-name>
dengan katalog, skema, dan nama volume untuk volume Katalog Unity.
Membuat tabel dari file di Katalog Unity
Untuk contoh lainnya, salin cuplikan SQL berikut dan tempelkan ke buku catatan SQL baru, terpisah dari buku catatan di bagian sebelumnya. Tambahkan setiap contoh cuplikan SQL ke selnya sendiri di buku catatan dalam urutan yang dijelaskan.
Tabel Langsung Delta mendukung pemuatan data dari semua format yang didukung oleh Azure Databricks. Lihat Opsi format data.
Semua pernyataan SQL Tabel Langsung Delta menggunakan CREATE OR REFRESH
sintaksis dan semantik. Saat Anda memperbarui alur, Tabel Langsung Delta menentukan apakah hasil yang benar secara logis untuk tabel dapat dicapai melalui pemrosesan inkremental atau jika diperlukan komputasi ulang penuh.
Contoh berikut membuat tabel dengan memuat data dari file CSV yang disimpan dalam volume Katalog Unity:
CREATE OR REFRESH MATERIALIZED VIEW baby_names_sql_raw
COMMENT "Popular baby first names in New York. This data was ingested from the New York State Department of Health."
AS SELECT Year, `First Name` AS First_Name, County, Sex, Count FROM read_files(
'/Volumes/<catalog-name>/<schema-name>/<volume-name>/babynames.csv',
format => 'csv',
header => true,
mode => 'FAILFAST')
Ganti <catalog-name>
, <schema-name>
, dan <volume-name>
dengan katalog, skema, dan nama volume untuk volume Katalog Unity.
Menambahkan tabel dari himpunan data upstream ke alur
Anda dapat menggunakan live
skema virtual untuk mengkueri data dari himpunan data lain yang dideklarasikan dalam alur Tabel Langsung Delta Anda saat ini. Mendeklarasikan tabel baru dengan cara ini membuat dependensi yang diselesaikan secara otomatis oleh Tabel Langsung Delta sebelum menjalankan pembaruan. live
Skema adalah kata kunci kustom yang diterapkan dalam Tabel Langsung Delta yang dapat diganti dengan skema target jika Anda ingin menerbitkan himpunan data Anda. Lihat Menggunakan Katalog Unity dengan alur Tabel Langsung Delta Anda dan Menggunakan alur Tabel Langsung Delta dengan metastore Apache Hive warisan.
Kode berikut juga mencakup contoh pemantauan dan menegakkan kualitas data dengan harapan. Lihat Mengelola kualitas data dengan Tabel Langsung Delta.
CREATE OR REFRESH MATERIALIZED VIEW baby_names_sql_prepared(
CONSTRAINT valid_first_name EXPECT (First_Name IS NOT NULL),
CONSTRAINT valid_count EXPECT (Count > 0) ON VIOLATION FAIL UPDATE
)
COMMENT "New York popular baby first name data cleaned and prepared for analysis."
AS SELECT
Year AS Year_Of_Birth,
First_Name,
Count
FROM live.baby_names_sql_raw;
Membuat tampilan data yang diperkaya
Karena Tabel Langsung Delta memproses pembaruan untuk alur sebagai serangkaian grafik dependensi, Anda dapat mendeklarasikan tampilan yang sangat diperkaya yang mendukung dasbor, BI, dan analitik dengan mendeklarasikan tabel dengan logika bisnis tertentu.
Kueri berikut menggunakan tampilan materialisasi untuk membuat tampilan yang diperkaya dari data hulu. Tidak seperti tampilan tradisional pada Spark yang menjalankan logika setiap kali tampilan dikueri, tampilan materialisasi menyimpan versi terbaru hasil kueri dalam file data. Karena Tabel Langsung Delta mengelola pembaruan untuk semua himpunan data dalam alur, Anda dapat menjadwalkan pembaruan alur agar sesuai dengan persyaratan latensi untuk tampilan materialisasi dan mengetahui bahwa kueri terhadap tabel ini berisi versi data terbaru yang tersedia.
CREATE OR REFRESH MATERIALIZED VIEW top_baby_names_sql_2021
COMMENT "A table summarizing counts of the top baby names for New York for 2021."
AS SELECT
First_Name,
SUM(Count) AS Total_Count
FROM live.baby_names_sql_prepared
WHERE Year_Of_Birth = 2021
GROUP BY First_Name
ORDER BY Total_Count DESC
LIMIT 10;
Untuk mengonfigurasi alur yang menggunakan buku catatan, lanjutkan ke Membuat alur.
Buat alur
Catatan
- Karena sumber daya komputasi dikelola sepenuhnya untuk alur DLT tanpa server, pengaturan komputasi tidak tersedia saat Anda memilih Tanpa Server untuk alur.
- Untuk informasi tentang kelayakan dan pengaktifan untuk alur DLT tanpa server, lihat Mengaktifkan komputasi tanpa server.
Tabel Langsung Delta membuat alur dengan menyelesaikan dependensi yang ditentukan dalam buku catatan atau file (disebut kode sumber) menggunakan sintaksIs Tabel Langsung Delta. Setiap file kode sumber hanya dapat berisi satu bahasa, tetapi Anda dapat mencampur kode sumber dari berbagai bahasa dalam alur Anda.
- Klik Tabel Langsung Delta di bar samping dan klik Buat Alur.
- Beri nama alur.
- (Opsional) Untuk menjalankan alur Anda menggunakan alur DLT tanpa server, pilih kotak centang Tanpa Server. Saat Anda memilih Tanpa Server, pengaturan Komputasi dihapus dari UI. Lihat Mengonfigurasi alur Tabel Langsung Delta tanpa server.
- (Opsional) Pilih edisi produk.
- Pilih Dipicu untuk Mode Alur.
- Konfigurasikan satu atau beberapa buku catatan yang berisi kode sumber untuk alur. Di kotak teks Jalur , masukkan jalur ke buku catatan atau klik untuk memilih buku catatan.
- Pilih tujuan untuk himpunan data yang diterbitkan oleh alur, baik metastore Apache Hive atau Katalog Unity. Lihat Menerbitkan himpunan data.
- Metastore Apache Hive:
- (Opsional) Masukkan lokasi Penyimpanan untuk data output dari alur. Sistem menggunakan lokasi default jika Anda membiarkan lokasi Penyimpanan kosong.
- (Opsional) Tentukan skema Target untuk menerbitkan himpunan data Anda ke metastore Apache Hive.
- Katalog Unity: Tentukan Katalog dan skema Target untuk menerbitkan himpunan data Anda ke Katalog Unity.
- Metastore Apache Hive:
- (Opsional) Jika Anda belum memilih Tanpa Server, Anda dapat mengonfigurasi pengaturan komputasi untuk alur. Untuk mempelajari tentang opsi untuk pengaturan komputasi, lihat Mengonfigurasi komputasi untuk alur Delta Live Tables.
- (Opsional) Klik Tambahkan pemberitahuan untuk mengonfigurasi satu atau beberapa alamat email untuk menerima pemberitahuan peristiwa alur. Lihat Menambahkan pemberitahuan email untuk peristiwa alur.
- (Opsional) Konfigurasikan pengaturan tingkat lanjut untuk alur. Untuk mempelajari tentang opsi untuk pengaturan tingkat lanjut, lihat Mengonfigurasi alur Tabel Langsung Delta.
- Klik Buat.
Halaman Detail Alur muncul setelah Anda mengklik Buat. Anda juga dapat mengakses alur Anda dengan mengeklik nama alur di tab Delta Live Tables.
Memulai eksekusi alur
Untuk memulai pembaruan untuk alur, klik tombol di panel atas. Sistem mengembalikan pesan yang mengonfirmasi bahwa alur Anda akan dimulai.
Setelah berhasil memulai pembaruan, sistem Delta Live Tables:
- Memulai kluster menggunakan konfigurasi kluster yang dibuat oleh sistem Delta Live Tables. Anda juga dapat menentukan konfigurasi kluster kustom.
- Membuat tabel apa pun yang tidak ada dan memastikan bahwa skema tersebut benar untuk tabel yang ada.
- Memperbarui tabel dengan data terbaru yang tersedia.
- Matikan kluster saat pembaruan selesai.
Catatan
Mode eksekusi diatur ke Produksi secara default, yang menyebarkan sumber daya komputasi ephemeral untuk setiap pembaruan. Anda dapat menggunakan mode Pengembangan untuk mengubah perilaku ini, memungkinkan sumber daya komputasi yang sama digunakan untuk beberapa pembaruan alur selama pengembangan dan pengujian. Lihat Mode pengembangan dan produksi.
Menerbitkan himpunan data
Anda bisa membuat himpunan data Tabel Langsung Delta tersedia untuk kueri dengan menerbitkan tabel ke metastore Apache Hive atau Katalog Unity. Jika Anda tidak menentukan target untuk menerbitkan data, tabel yang dibuat di alur Delta Live Tables hanya dapat diakses oleh operasi lain dalam alur yang sama. Lihat Menggunakan alur Tabel Langsung Delta dengan metastore Apache Hive warisan dan Menggunakan Katalog Unity dengan alur Tabel Langsung Delta Anda.
Contoh buku catatan kode sumber
Anda dapat mengimpor buku catatan ini ke ruang kerja Azure Databricks dan menggunakannya untuk menyebarkan alur Tabel Langsung Delta. Lihat Membuat alur.
Mulai dengan buku catatan Python Delta Live Tables
Mulai dengan buku catatan SQL Delta Live Tables
Contoh buku catatan kode sumber untuk ruang kerja tanpa Katalog Unity
Anda dapat mengimpor buku catatan ini ke ruang kerja Azure Databricks tanpa Mengaktifkan Katalog Unity dan menggunakannya untuk menyebarkan alur Tabel Langsung Delta. Lihat Membuat alur.