Bagikan melalui


Melewatkan data untuk Delta Lake

Catatan

Di Databricks Runtime 13.3 ke atas, Databricks merekomendasikan penggunaan pengklusteran cair untuk tata letak tabel Delta. Pengklusteran tidak kompatibel dengan urutan Z. Lihat Gunakan pengklusteran cair untuk tabel Delta.

Informasi data yang dilewati dikumpulkan secara otomatis saat Anda menulis data ke dalam tabel Delta. Delta Lake di Azure Databricks memanfaatkan informasi ini (nilai minimum dan maksimum, jumlah null, dan total rekaman per file) pada waktu kueri untuk memberikan kueri yang lebih cepat.

Anda harus memiliki statistik yang dikumpulkan untuk kolom yang digunakan dalam ZORDER pernyataan. Lihat Apa itu pemesanan Z?.

Tentukan kolom statistik Delta

Secara default, Delta Lake mengumpulkan statistik pada 32 kolom pertama yang ditentukan dalam skema tabel Anda. Ketika pengoptimalan prediktif diaktifkan, statistik lompati file dipilih secara cerdas dan tidak terbatas pada 32 kolom pertama. Pengoptimalan prediktif secara otomatis berjalan ANALYZE, perintah untuk mengumpulkan statistik, pada tabel terkelola Katalog Unity. Databricks merekomendasikan untuk mengaktifkan pengoptimalan prediktif untuk semua tabel terkelola Unity Catalog untuk menyederhanakan pemeliharaan data dan mengurangi biaya penyimpanan. Lihat Pengoptimalan prediktif untuk tabel terkelola Unity Catalog.

Jika Anda tidak menggunakan pengoptimalan prediktif, Anda dapat mengubah perilaku yang membatasi koleksi statistik menjadi 32 kolom dengan mengatur salah satu properti tabel berikut:

Properti tabel Runtime Databricks didukung Deskripsi
delta.dataSkippingNumIndexedCols Semua versi Databricks Runtime yang didukung Menambah atau mengurangi jumlah kolom tempat Delta mengumpulkan statistik. Bergantung pada urutan kolom.
delta.dataSkippingStatsColumns Databricks Runtime 13.3 LTS ke atas Tentukan daftar nama kolom tempat Delta Lake mengumpulkan statistik. Supersedes dataSkippingNumIndexedCols.

Properti tabel dapat diatur pada pembuatan tabel atau dengan ALTER TABLE pernyataan. Lihat Referensi properti tabel Delta.

Memperbarui properti ini tidak secara otomatis mengolah ulang statistik untuk data yang ada. Sebaliknya, ini berdampak pada perilaku pengumpulan statistik di masa depan saat menambahkan atau memperbarui data dalam tabel. Delta Lake tidak memanfaatkan statistik untuk kolom yang tidak disertakan dalam daftar kolom statistik saat ini.

Di Databricks Runtime 14.3 LTS ke atas, jika Anda telah mengubah properti tabel atau mengubah kolom yang ditentukan untuk statistik, Anda dapat memicu komputasi ulang statistik secara manual untuk tabel Delta menggunakan perintah berikut:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

Catatan

String panjang dipotong selama pengumpulan statistik. Anda dapat memilih untuk mengecualikan kolom string panjang dari koleksi statistik, terutama jika kolom tidak sering digunakan untuk memfilter kueri.

Apa itu pemesanan Z?

Catatan

Databricks merekomendasikan penggunaan pengklusteran cairan untuk semua tabel Delta baru. Anda tidak dapat menggunakan ZORDER dalam kombinasi dengan pengklusteran cairan. Lihat Gunakan pengklusteran cair untuk tabel Delta.

Urutan Z adalah teknik untuk mengkolokasikan informasi terkait dalam kumpulan file yang sama. Kolokalitas ini digunakan secara otomatis oleh Delta Lake pada algoritma pelewatan data Azure Databricks. Perilaku ini sangat mengurangi jumlah data yang perlu dibaca Delta Lake pada Azure Databricks. Untuk data Z-order, Anda menentukan kolom yang akan diurutkan ZORDER BY dalam klausul:

OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)

Jika Anda mengharapkan kolom yang umum digunakan dalam predikat kueri dan jika kolom tersebut memiliki kardinalitas tinggi (yaitu, sejumlah besar nilai yang berbeda), maka gunakan ZORDER BY.

Anda dapat menentukan beberapa kolom untuk ZORDER BY sebagai daftar yang dipisahkan koma. Namun, efektivitas lokalitas akan menurun seiring munculnya kolom tambahan. Pengurutan Z pada kolom yang tidak memiliki statistik yang dikumpulkan pada kolom tersebut tidak akan efektif dan membuang-buang sumber daya. Hal ini dikarenakan pelompatan data memerlukan statistik kolom lokal seperti min, maks, dan hitungan. Anda dapat mengonfigurasi pengumpulan statistik pada kolom tertentu dengan cara mengatur ulang kolom dalam skema atau meningkatkan jumlah kolom untuk mengumpulkan statistik.

Catatan

  • Urutan Z tidak idempotensi tetapi bertujuan untuk menjadi operasi inkremental. Waktu yang diperlukan untuk pemesanan Z tidak dijamin untuk mengurangi beberapa eksekusi. Namun, jika tidak ada data baru yang ditambahkan ke partisi yang hanya diurutkan Z, pengurutan Z lain dari partisi tersebut tidak akan berpengaruh apa pun.

  • Pengurutan Z bertujuan untuk menghasilkan file data yang seimbang secara merata sehubungan dengan jumlah tuple, tetapi belum tentu ukuran data pada disk. Kedua langkah tersebut paling sering berhubungan, tetapi mungkin ada situasi ketika hal tersebut tidak terjadi, sehingga mengarah ke penyimpanan dalam waktu pengoptimalan tugas.

    Misalnya, jika Anda ZORDER BYberkencan dan rekaman terbaru Anda semuanya jauh lebih luas (misalnya array atau nilai string yang lebih panjang) daripada yang di masa lalu, diharapkan durasi tugas pekerjaan akan condong, serta ukuran file yang OPTIMIZE dihasilkan. Namun, ini hanya masalah untuk perin OPTIMIZE itu sendiri; seharusnya tidak memiliki dampak negatif pada kueri berikutnya.