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.
Perintah menulis OPTIMIZE ulang file data untuk meningkatkan tata letak data untuk tabel Delta Lake dan Apache Iceberg. 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.
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 tabel yang dikelola oleh Unity Catalog.
Tabel Delta Lake tanpa pengklusteran cairan dapat secara opsional menyertakan ZORDER BY klausul untuk meningkatkan pengklusteran data pada penulisan ulang. Tabel Apache Iceberg menggunakan strategi pengklusteran dan pengurutan alih-alih ZORDER. Databricks merekomendasikan penggunaan pengklusteran cair alih-alih partisi, ZORDER, atau pendekatan tata letak data lainnya.
Lihat OPTIMIZE.
Important
Di Databricks Runtime 16.0 ke atas, Anda dapat menggunakan OPTIMIZE FULL untuk memaksa pengklusteran ulang untuk tabel dengan fitur pengklusteran cair diaktifkan. Lihat Paksa Rekluster.
Contoh sintaks
Untuk memicu pemadatan, jalankan perintah OPTIMIZE:
SQL
OPTIMIZE table_name
Python
API Python DeltaTable ini khusus untuk Delta Lake.
from delta.tables import *
deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().executeCompaction()
Scala
API Scala DeltaTable secara khusus ditujukan untuk Delta Lake.
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, tentukan predikat partisi opsional menggunakan WHERE:
SQL
OPTIMIZE table_name WHERE date >= '2022-11-18'
Python
API Python DeltaTable ini khusus untuk Delta Lake.
from delta.tables import *
deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().where("date='2021-11-18'").executeCompaction()
Scala
API Scala DeltaTable secara khusus ditujukan untuk Delta Lake.
import io.delta.tables._
val deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().where("date='2021-11-18'").executeCompaction()
Pertimbangkan informasi berikut untuk pengemasan bin:
- Pengoptimalan pengemasan kotak bersifat idempoten, sehingga jika dijalankan dua kali pada himpunan data yang sama, pengulangan kedua tidak berpengaruh.
- Bin-packing bertujuan menghasilkan berkas data yang terdistribusi secara seimbang dari segi ukuran penyimpanan, tetapi tidak selalu berdasarkan jumlah tuple per berkas. Namun, kedua langkah tersebut sering berkorelasi.
Pembaca tabel Delta Lake menggunakan isolasi rekam jepret, yang berarti bahwa tabel tersebut tidak terganggu saat OPTIMIZE menghapus file yang tidak perlu dari log transaksi. Karena OPTIMIZE tidak mengubah data apa pun pada tabel, pembacaan sebelum dan sesudah OPTIMIZE memberikan hasil yang sama. Melakukan OPTIMIZE pada tabel yang merupakan sumber streaming tidak memengaruhi aliran saat ini atau yang akan datang dengan 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.
Frekuensi yang disarankan untuk dijalankan OPTIMIZE
Aktifkan pengoptimalan prediktif untuk tabel terkelola Unity Catalog untuk memastikan bahwa OPTIMIZE berjalan secara otomatis saat hemat biaya.
Saat Anda memilih frekuensi untuk menjalankan OPTIMIZE, ada kompromi 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, kemudian menyesuaikan frekuensi untuk menyeimbangkan biaya dan kompromi performa.
Jenis instans yang direkomendasikan untuk OPTIMIZE
Kedua operasi tersebut sangat membebani CPU karena melibatkan dekode dan pengodean Parquet dalam jumlah besar.
Databricks merekomendasikan jenis instans komputasi yang dioptimalkan .
OPTIMIZE juga mendapat manfaat dari SSD yang terpasang.