Mengoptimalkan tata letak file data
Pengoptimalan prediktif secara otomatis berjalan OPTIMIZE
pada tabel terkelola Unity Catalog. Databricks merekomendasikan untuk mengaktifkan pengoptimalan prediktif untuk semua tabel terkelola Unity Catalog untuk menyederhanakan pemeliharaan data dan mengurangi biaya penyimpanan. Lihat Pengoptimalan prediktif untuk Delta Lake.
Perintah OPTIMIZE
menulis ulang file data untuk meningkatkan tata letak data untuk tabel Delta. Untuk tabel dengan pengklusteran cair diaktifkan, OPTIMIZE
tulis ulang file data untuk mengelompokkan data dengan kunci pengklusteran cair. Untuk tabel dengan partisi yang ditentukan, pemadatan file dan tata letak data dilakukan dalam partisi.
Tabel tanpa pengklusteran cair dapat secara opsional menyertakan ZORDER BY
klausul untuk meningkatkan pengklusteran data pada penulisan ulang. Databricks merekomendasikan penggunaan pengklusteran cair alih-alih partisi, ZORDER
, atau pendekatan tata letak data lainnya.
Lihat OPTIMALKAN.
Contoh sintaks
Anda memicu pemadatan dengan menjalankan perintah OPTIMIZE
:
SQL
OPTIMIZE table_name
Python
from delta.tables import *
deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().executeCompaction()
Scala
import io.delta.tables._
val deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().executeCompaction()
Jika Anda memiliki sejumlah besar data dan hanya ingin mengoptimalkan subsetnya, Anda dapat menentukan predikat partisi opsional menggunakan WHERE
:
SQL
OPTIMIZE table_name WHERE date >= '2022-11-18'
Python
from delta.tables import *
deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().where("date='2021-11-18'").executeCompaction()
Scala
import io.delta.tables._
val deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().where("date='2021-11-18'").executeCompaction()
Catatan
- Pengoptimalan pengemasan berkelompok bersifat idempoten, sehingga jika pengoptimalan dijalankan dua kali pada himpunan data yang sama, eksekusi kedua tidak berpengaruh.
- Bin-packing bertujuan untuk menghasilkan file data sehubungan dengan ukurannya seimbang pada disk, tetapi tidak selalu terhadap jumlah tuple per file. Namun, kedua tindakan tersebut adalah dua tindakan yang paling sering berhubungan.
- API Python dan Scala untuk mengeksekusi
OPTIMIZE
operasi tersedia dari Databricks Runtime 11.3 LTS ke atas.
Pembaca tabel Delta menggunakan isolasi snapshot, yang berarti bahwa mereka tidak terganggu ketika OPTIMIZE
menghapus file yang tidak perlu dari log transaksi. OPTIMIZE
tidak membuat perubahan terkait data pada tabel, jadi pembacaan sebelum dan sesudah OPTIMIZE
memiliki hasil yang sama. Menjalankan OPTIMIZE
di atas tabel yang merupakan sumber streaming tidak memengaruhi aliran saat ini atau masa mendatang yang memperlakukan tabel ini sebagai sumber. OPTIMIZE
mengembalikan statistik file (min, max, total, dan sebagainya) untuk file yang dihapus dan file yang ditambahkan oleh operasi. Optimalkan statistik juga berisi statistik Z-Ordering, jumlah batch, dan partisi yang dioptimalkan.
Anda juga dapat memampatkan file kecil secara otomatis menggunakan pemadatan otomatis. Lihat Pemadatan otomatis untuk Delta Lake di Azure Databricks.
Seberapa sering saya harus menjalankan OPTIMIZE
?
Aktifkan pengoptimalan prediktif untuk tabel terkelola Unity Catalog untuk memastikan bahwa OPTIMIZE
berjalan secara otomatis saat hemat biaya.
Ketika Anda memilih seberapa sering untuk menjalankan OPTIMIZE
, ada konsekuensi antara kinerja dan biaya. Untuk performa kueri pengguna akhir yang lebih baik, jalankan OPTIMIZE
lebih sering. Ini akan dikenakan biaya yang lebih tinggi karena peningkatan penggunaan sumber daya. Untuk mengoptimalkan biaya, jalankan lebih jarang.
Databricks merekomendasikan agar Anda mulai dengan menjalankan OPTIMIZE
setiap hari, lalu menyesuaikan frekuensi untuk menyeimbangkan biaya dan trade-off performa.
Apa jenis instans terbaik untuk dijalankan OPTIMIZE
(bin-packing dan Z-Ordering) aktif?
Kedua operasi adalah operasi intensif CPU yang melakukan banyak sekali pendekodean dan pengkodean Parket.
Databricks merekomendasikan jenis instans komputasi yang dioptimalkan . OPTIMIZE
juga mendapat manfaat dari SSD terlampir.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk