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.
File berukuran tepat penting untuk performa kueri, pemanfaatan sumber daya, dan manajemen metadata. File yang lebih kecil meningkatkan beban kerja dan operasi metadata, sementara file yang lebih besar dapat kurang memanfaatkan paralelisme dan membengkokkan I/O. Delta Lake menggunakan metadata file untuk pemangkasan partisi dan pemindahan data, sehingga menargetkan ukuran file yang tepat memastikan pembacaan, penulisan, dan pemeliharaan yang efisien.
Untuk rekomendasi ukuran file berdasarkan skenario konsumsi (Titik Akhir Analitik SQL, Power BI Direct Lake, Spark), lihat Pemeliharaan dan pengoptimalan tabel lintas beban kerja.
Bagian berikut ini menjelaskan fitur utama yang bisa Anda gunakan untuk menyetel ukuran file dalam tabel Delta.
Operasi tata letak data yang dapat disesuaikan
Optimize
Perintah OPTIMIZE menulis ulang file kecil sebagai file yang lebih besar untuk meningkatkan tata letak data dalam tabel Delta. Untuk detail selengkapnya termasuk informasi penyetelan ukuran file, tinjau dokumentasi perintah OPTIMIZE .
Pemadatan otomatis
Pemadatan Otomatis secara otomatis mengevaluasi kesehatan partisi setelah setiap operasi tulis. Ketika mendeteksi fragmentasi file yang berlebihan (terlalu banyak file kecil) dalam partisi, itu memicu operasi sinkron OPTIMIZE segera setelah penulisan dilakukan. Pendekatan berbasis penulis untuk pemeliharaan file ini umumnya optimal karena pemadatan hanya dijalankan ketika secara terprogram ditentukan bermanfaat. Untuk opsi konfigurasi terperinci dan informasi tambahan, lihat dokumentasi pemadatan otomatis .
Optimalkan penulisan
Optimalkan penulisan mengurangi overhead file kecil dengan melakukan pemadatan pra-tulis (kemasan bin), yang menghasilkan lebih sedikit file yang lebih besar. Pendekatan ini mengacak data dalam memori menjadi bin berukuran optimal sebelum Spark menulis file Parquet, memaksimalkan potensi untuk menghasilkan file berukuran tepat tanpa memerlukan operasi pembersihan pasca-tulis segera.
Gunakan penulisan yang dioptimalkan secara selektif. Pengacakan dapat menambahkan waktu pemrosesan yang tidak perlu di beberapa jalur tulis. Pengoptimalan penulisan paling bermanfaat ketika penulisan akan membuat banyak file-file kecil yang nantinya memerlukan pemadatan.
Optimalkan penulisan biasanya bermanfaat untuk:
- Tabel berpartisi
- Tabel dengan sisipan kecil yang sering
- Operasi yang cenderung menyentuh banyak file (
MERGE,UPDATE, danDELETE)
Untuk aplikasi selektif pada tabel tertentu, batalkan pengaturan konfigurasi sesi dan aktifkan properti tabel satu per satu. Ini memungkinkan setiap tabel mengontrol apakah pengoptimalan penulisan diterapkan.
Nonaktifkan pengoptimalan penulisan
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")Aktifkan pada setiap tabel
ALTER TABLE dbo.table_name SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
Untuk mengaktifkan pengoptimalan penulisan untuk penulisan ke semua tabel yang dipartisi dalam sesi Spark, pastikan konfigurasi sesi belum disetel, lalu atur spark.microsoft.delta.optimizeWrite.partitioned.enabled:
Ukuran file target yang dihasilkan dari penulisan yang dioptimalkan dapat disesuaikan melalui konfigurasi spark.databricks.delta.optimizeWrite.binSize.
Nota
Lihat profil sumber daya untuk mengoptimalkan pengaturan tulis secara default menurut profil sumber daya.
Atur ukuran file target secara konsisten
Untuk menghindari pengaturan terpisah untuk konfigurasi sesi ukuran file minimum dan maksimum untuk mengoptimalkan, pemadatan otomatis, dan mengoptimalkan penulisan datadelta.targetFileSize, gunakan properti tabel. Properti ini menyaingkan perilaku ukuran file pada tingkat tabel. Tentukan nilai sebagai string byte (misalnya, , 1073741824b1048576k, 1024m, 1g). Ketika diatur, memiliki prioritas daripada konfigurasi sesi dan ukuran file target adaptif.
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')
Ukuran file target adaptif
Microsoft Fabric menyediakan ukuran file target adaptif untuk menghilangkan kompleksitas yang terkait dengan penyetelan ukuran file target secara manual dari semua tabel dalam sesi atau tabel individual melalui properti tabel delta.targetFileSize. Ukuran file target adaptif menggunakan heuristik tabel Delta seperti ukuran tabel untuk memperkirakan ukuran file target yang ideal dan secara otomatis memperbarui target saat kondisi berubah, memastikan performa optimal tanpa intervensi manual atau overhead pemeliharaan.
Aktifkan ukuran file target adaptif
Nota
Meskipun saat ini tidak diaktifkan secara bawaan, Microsoft merekomendasikan untuk mengaktifkan fitur konfigurasi sesi ukuran file target adaptif.
Aktifkan ukuran file target adaptif pada tabel yang dibuat atau dimodifikasi dalam sesi Spark dengan mengatur konfigurasi sesi Spark berikut:
Memahami perilaku evaluasi
Saat diaktifkan, ukuran file target adaptif dievaluasi dan diatur dalam skenario berikut:
-
CREATE TABLE AS SELECToperasi danCREATE OR REPLACE TABLE AS SELECT - Penulisan ulang (misalnya,
DataFrame.write.mode("overwrite")atauINSERT OVERWRITE) - Menulis dalam
ErrorIfExistsmode ,Append, atauIgnoresaat membuat tabel baru - Di awal
OPTIMIZEperintah
Setelah ditetapkan, ukuran ideal terus dievaluasi kembali pada awal setiap OPTIMIZE operasi untuk memastikan bahwa heuristik saat ini mencerminkan distribusi data terbaru dan pertumbuhan tabel. Pendekatan adaptif ini secara otomatis memperbarui ukuran file target dari waktu ke waktu, menghapus kebutuhan akan penyetelan manual sambil mempertahankan kueri dan menulis performa saat data Anda tumbuh. Saat perlu mengunci dalam ukuran tertentu, seperti dalam kasus penggunaan hyper-tuning atau pengujian, Anda dapat mengambil alih pengaturan adaptif dengan secara eksplisit mengatur properti tabel yang ditentukan delta.targetFileSize pengguna.
Menyetel batas ukuran file target adaptif
Ukuran file target adaptif dapat dikonfigurasi lebih lanjut melalui konfigurasi sesi Spark berikut:
| Harta benda | Description | Nilai Bawaan | Konfigurasi Sesi |
|---|---|---|---|
| minFileSize | Menentukan ukuran file minimum (batas bawah) sebagai string byte yang digunakan oleh Ukuran File Target Adaptif ketika dievaluasi. Harus antara 128 MB dan 1 GB. | 128m | spark.microsoft.delta.targetFileSize.adaptive.minFileSize |
| maxFileSize | Menentukan ukuran file maksimum (batas atas) sebagai string byte yang digunakan Ukuran File Target Adaptif saat dievaluasi. Harus antara 128 MB dan 1 GB. | 1024m | spark.microsoft.delta.targetFileSize.adaptive.maxFileSize |
| stopAtMaxSize | Ketika true terjadi, evaluasi ukuran tidak akan dilanjutkan setelah ukuran file target yang dihitung mencapai maxFileSize, sehingga mengurangi beban tambahan evaluasi pada tabel yang sangat besar. |
true | spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize |
Nota
Dengan stopAtMaxSize diaktifkan (default), ukuran target adaptif tetap pada nilai maksimum setelah tercapai, menghindari komputasi tambahan. Jika tabel Anda mungkin menyusut setelah bertambah, atur properti ini ke untuk false memungkinkan pengkalkulasian ulang di bawah ambang batas maksimum.
Memeriksa ukuran target yang dievaluasi
Anda dapat mengaudit ukuran file target adaptif yang dievaluasi dengan memeriksa detail tabel dan properti dari DESCRIBE DETAIL atau DESCRIBE EXTENDED. Nilai yang dievaluasi ditulis sebagai string byte dalam delta.targetFileSize.adaptive properti tabel.
Nilai ini digunakan sebagai ukuran target (atau maks) untuk mengoptimalkan, pemadatan otomatis, dan mengoptimalkan penulisan. Nilai minimum terkait dihitung sebagai setengah dari delta.targetFileSize.adaptive.
Memahami dampak performa
Bagan berikut mengilustrasikan hubungan antara ukuran tabel dan ukuran file parquet yang optimal. Untuk tabel di bawah 10 GB, Fabric Spark Runtime mengevaluasi ukuran file target menjadi 128 MB. Seiring bertambahnya ukuran tabel, ukuran file target diskalakan secara linier, mencapai hingga 1 GB untuk tabel yang melebihi 10 TB.
Memulai dari yang kecil pada 128MB dan kemudian menskalakan ukuran file parquet saat tabel berkembang memiliki manfaat berjenjang.
Peningkatan pengabaian file Delta: File yang berukuran tepat mendukung pengelompokan dan penghindaran data yang optimal, memungkinkan protokol pengabaian file Delta untuk mengeluarkan lebih banyak file yang tidak relevan selama eksekusi kueri. Tabel kecil dengan file 128MB, alih-alih file 1GB, memungkinkan delapan kali lebih banyak file yang bisa dilewatkan.
Mengurangi biaya pembaruan:
MERGEdanUPDATEoperasi hanya menulis ulang file yang terpengaruh. File berukuran kanan meminimalkan jumlah file yang disentuh per operasi, mengurangi jumlah data yang ditulis ulang. Dengan Vektor Penghapusan diaktifkan, ukuran file yang tepat menjadi penting: batu nisan tingkat baris dalam file yang terlalu besar menghasilkan biaya pembersihan yang signifikan selama operasi pemadatan atau pembersihan.Paralelisme yang dioptimalkan: File berukuran tepat memungkinkan Spark mencapai paralelisme tugas yang ideal. Terlalu banyak file kecil membuat penjadwal kewalahan; terlalu sedikit file besar yang kurang memanfaatkan kumpulan Spark Anda. Ukuran optimal memaksimalkan throughput untuk pembacaan dan penulisan.
Ukuran file target adaptif dapat meningkatkan performa pemadatan dan latensi kueri/tulis saat memilih ukuran yang lebih baik daripada konfigurasi default. Jika evaluasi adaptif menghasilkan ukuran yang sama dengan konfigurasi sesi Spark default, tidak ada peningkatan terukur yang diharapkan.
Penting
Amplifikasi tulis terjadi ketika file yang sebelumnya dikompresi ditulis ulang saat ukuran file target meningkat dari waktu ke waktu. Untuk mengurangi risiko ini, aktifkan sasaran pemadatan tingkat berkas (spark.microsoft.delta.optimize.fileLevelTarget.enabled=true). Pengaturan ini membantu melestarikan pekerjaan pemadatan sebelumnya dengan menghindari pengkompakan ulang file yang tidak diperlukan, yang sudah dipadatkan di bawah ukuran target sebelumnya. Untuk informasi selengkapnya, lihat target pemadatan tingkat file.
Ringkasan praktik terbaik
Gunakan rekomendasi ini untuk menyeimbangkan biaya tulis, performa baca, dan overhead pemeliharaan saat tabel tumbuh.
- Mengaktifkan Pemadatan Otomatis untuk pipeline penyerapan dengan penulisan kecil yang sering (streaming atau mikro-batch) sehingga kesehatan berkas dipertahankan tanpa penjadwalan manual.
- Gunakan Pemadatan otomatis secara selektif untuk pola tulis lainnya saat tujuan tingkat layanan Anda dapat mentolerir lonjakan latensi tulis sesekali.
- Aktifkan ukuran file target adaptif untuk mengurangi penyetelan manual dan menjaga ukuran target tetap selaras dengan pertumbuhan tabel.
- Gunakan penulisan optimasi dalam jalur penyerapan terkontrol (pekerjaan batch yang dapat mentolerir pengacakan, penulisan yang dipartisi, atau penulisan kecil yang sering) untuk mengurangi tekanan pemadatan hilir.
-
Jadwalkan tabel
OPTIMIZEpenuh selama jendela tenang saat Anda perlu menulis ulang banyak partisi atau menerapkan Z-Order. -
Aktifkan pengoptimalan cepat untuk mengurangi amplifikasi tulis dan membuat
OPTIMIZElebih idempoten. Lihat pengoptimalan cepat. -
Gunakan
delta.targetFileSizeatau ukuran file target adaptif secara konsisten sehingga mengoptimalkan, pemadatan otomatis, dan penulisan optimal mencapai tujuan ukuran file yang kompatibel. - Aktifkan target pemadatan tingkat file untuk mengurangi kompaksi ulang yang tidak perlu karena ukuran file target meningkat dari waktu ke waktu.
Konten terkait
- Pemeliharaan dan pengoptimalan tabel lintas beban kerja
- Pengoptimalan tabel Delta Lake dan V-Order
- Pemadatan tabel
- Pemeliharaan tabel Lakehouse