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.
Ketika sebuah kueri menggabungkan tabel Delta Lake besar ke tabel yang lebih kecil dan terfilter, nilai filter tidak diketahui sampai kueri dijalankan. Tanpa pemangkasan runtime, kueri memindai setiap file dalam tabel besar, bahkan file yang tidak memiliki baris yang cocok. Pemangkasan berkas dinamis mengatasi masalah ini. Saat runtime, optimizer mendorong hasil filter dari satu sisi join ke pemindaian tabel Delta Lake dan melewati file yang tidak dapat berisi baris yang cocok.
Pemangkasan file dinamis diaktifkan secara default. Anda tidak perlu mengubah kueri Anda untuk mendapatkan manfaat darinya.
Saat pemangkasan file dinamis diterapkan
Pemangkasan file dinamis hanya berlaku untuk join pada tabel Delta Lake. Dalam pernyataan MERGE, pernyataan ini menggunakan nilai kunci join dari sumber untuk melewati file target ketika kondisi merge membandingkan kolom sumber dengan kolom target untuk kesetaraan. Dalam pernyataan UPDATE dan DELETE, ini berlaku ketika kondisi berisi subquery yang melakukan jenis perbandingan yang sama.
Pemangkasan file dinamis dalam pernyataan MERGE, UPDATE, dan DELETE memerlukan komputasi berkemampuan Photon. Untuk SELECT statement, Photon memiliki pemangkasan file dinamis yang lebih luas dan lebih andal. Tanpa Photon, pemangkasan file dinamis mungkin masih berlaku pada pernyataan SELECT, tergantung pada bentuk kueri dan rencana eksekusi. Lihat Apa itu Photon?.
Pemangkasan file dinamis paling meningkatkan kinerja untuk tabel tanpa partisi dan untuk join pada kolom yang tidak dipartisi. Secara default, ini hanya terpicu ketika tabel Delta Lake besar dalam join berukuran minimal 10 GB dan memiliki setidaknya 10 file. Lihat Konfigurasi.
Pemangkasan file dinamis juga mengurangi konflik penulisan. Ketika Delta Lake memeriksa konflik selama commit, Delta Lake mempertimbangkan file yang dilewati oleh pemangkasan file dinamis. Ini mengurangi jumlah transaksi yang gagal. Lihat Tingkat isolasi dan konflik penulisan.
Praktik terbaik
Efek kinerja dari pemangkasan file dinamis berkorelasi dengan cara data dikelompokkan. Jika nilai yang Anda gabungkan tersebar di setiap file, pemangkasan file dinamis hanya melewati sedikit file. Untuk membantu pemangkasan file dinamis mengabaikan lebih banyak file, ikuti praktik berikut:
- Gunakan liquid clustering pada kolom yang sering Anda gunakan untuk join, sehingga baris yang cocok ditempatkan bersama dalam lebih sedikit file.
- Gunakan komputasi yang mendukung Photon, yang diperlukan oleh pernyataan
MERGE,UPDATE, danDELETEuntuk pemangkasan file dinamis.
Konfigurasi
Sebagian besar beban kerja tidak perlu mengubah pengaturan ini. Pertimbangkan untuk menyetel ambang jika gabungan terhadap tabel Delta Lake yang lebih kecil akan mendapat manfaat dari pemangkasan tetapi berada di bawah ambang batas ukuran default atau ambang jumlah file default.
Properti konfigurasi Apache Spark berikut mengontrol pemangkasan file dinamis:
| Property | Type | Default | Description |
|---|---|---|---|
spark.databricks.optimizer.dynamicFilePruning |
Boolean |
true |
Mengaktifkan atau menonaktifkan pemangkasan file secara dinamis. |
spark.databricks.optimizer.deltaTableSizeThreshold |
Long |
10000000000 (10 GB) |
Ukuran minimum, dalam byte, dari tabel Delta Lake besar di join yang memicu pemangkasan file dinamis. Untuk tabel yang lebih kecil, memindai seluruh tabel biasanya lebih murah daripada mendorong filter ke bawah. Untuk menemukan ukuran tabel Delta Lake, jalankan DESCRIBE DETAIL table_name dan periksa sizeInBytes kolomnya. |
spark.databricks.optimizer.deltaTableFilesThreshold |
Integer |
10 |
Jumlah minimum file pada join di tabel Delta Lake besar yang memicu pemangkasan file dinamis. Jika tabel memiliki lebih sedikit file dari ambang batas ini, pemangkasan file dinamis tidak berjalan, karena mungkin tidak sepadan untuk tabel dengan hanya beberapa file. Untuk menemukan jumlah file dalam tabel Delta Lake, jalankan DESCRIBE DETAIL table_name dan periksa numFiles kolomnya. |