Rekomendasi pengoptimalan pada Azure Databricks

Kueri yang lambat dan biaya komputasi yang tinggi biasanya berasal dari beberapa penyebab utama: membaca lebih banyak data daripada yang dibutuhkan kueri, melakukan shuffle data antar node, memilih rencana kueri yang buruk, atau menulis ulang file yang tidak berubah. Azure Databricks secara otomatis mengatasi banyak penyebab ini pada beban kerja mulai dari pemrosesan ETL skala besar hingga kueri interaktif ad-hoc. Optimasi lain hanya berlaku saat Anda mengaktifkannya atau menyetelnya untuk beban kerja tertentu.

Halaman ini dimulai dengan rekomendasi untuk sebagian besar beban kerja, lalu mengelompokkan optimasi berdasarkan apakah mereka berjalan otomatis atau mengharuskan Anda mengonfigurasinya, dan menjelaskan masalah yang diselesaikan masing-masing. Sebagian besar optimasi Databricks Runtime memerlukan Delta Lake, format default untuk tabel di Azure Databricks.

Mulailah dengan rekomendasi berikut

Pilihan-pilihan ini memberikan peningkatan kinerja terbesar untuk sebagian besar beban kerja. Mereka juga membantu banyak optimasi otomatis di halaman ini bekerja dengan maksimal.

  • Gunakan klastering cair untuk tata letak tabel.Klasterisasi cair menggantikan partisi tabel dan ZORDER. Aplikasi ini mengatur data berdasarkan kolom yang sering Anda filter, yang meningkatkan data skipping dan pemangkasan file dinamis.
  • Gunakan tabel yang dikelola oleh Unity Catalog.Optimasi prediktif memelihara tabel yang dikelola secara otomatis. Lihat tabel terkelola Unity Catalog untuk Delta Lake dan Apache Iceberg.
  • Gunakan komputasi dengan Photon aktif. I/O prediktif membutuhkan Photon, begitu juga dengan pemangkasan file dinamis di pernyataan MERGE, UPDATE, dan DELETE. Lihat Apa itu Photon?.
  • Aktifkan vektor penghapusan. I/O prediktif menggunakan vektor penghapusan untuk menghindari penulisan ulang file secara keseluruhan selama pembaruan, penghapusan, dan penggabungan, dan konkurensi tingkat baris membutuhkannya. Untuk tabel Delta Lake, Anda harus mengaktifkan vektor penghapusan secara eksplisit. Lihat Vektor penghapusan di Databricks.
  • Gunakan Databricks Runtime terbaru. Versi baru mencakup peningkatan performa terbaru. Beberapa optimasi memerlukan versi Databricks Runtime minimum atau komputasi yang mendukung Photon. Lihat setiap halaman untuk persyaratan.

Pengoptimalan otomatis

Optimasi ini diaktifkan secara bawaan. Anda tidak perlu mengaktifkannya, tetapi beberapa memberikan manfaat lebih ketika tabel dan komputasi Anda memenuhi kondisi tertentu, seperti menggunakan Photon atau menjaga statistik tabel tetap terbaru.

  • Cache disk: Mempercepat kueri yang berulang kali membaca file data jarak jauh Parquet dan Delta Lake yang sama. Azure Databricks menyimpan salinan file dalam cache di penyimpanan lokal node komputasi sehingga pembacaan berikutnya berjalan secara lokal. Azure Databricks mengaktifkannya secara otomatis pada tipe instance pekerja yang mendukungnya.
  • Pemangkasan file dinamis: Melewati file yang tidak dapat berisi baris yang cocok dalam join pada tabel Delta Lake. MERGE, UPDATE, dan DELETE statemen memerlukan komputasi yang diaktifkan Photon untuk pemangkasan file dinamis.
  • Penggabungan shuffle rendah: Mempercepat MERGE operasi yang memperbarui atau menghapus beberapa baris di setiap file. Low shuffle merge memproses baris yang tidak dimodifikasi tanpa shuffle dan mempertahankan tata letak data yang ada.
  • Eksekusi kueri adaptif: Mengoptimalkan ulang rencana kueri saat kueri dijalankan, berdasarkan ukuran data yang sebenarnya. Ini memperbaiki strategi join yang lambat, terlalu banyak tugas kecil, dan tugas yang timpang yang berasal dari estimasi yang tidak akurat.
  • I/O Prediktif: Mempercepat pemindaian data dan mengurangi data yang ditulis ulang selama pembaruan, penghapusan, dan penggabungan pada komputasi berkemampuan Photon.
  • Pengoptimal berbasis biaya: Menggunakan statistik tabel dan kolom untuk memilih rencana kueri yang efisien, terutama untuk kueri dengan beberapa join. Optimizer berbasis biaya bergantung pada statistik, jadi kumpulkan dan perbarui semuanya.
  • Optimasi prediktif: Menjalankan OPTIMIZE, VACUUM, dan ANALYZE pada tabel terkelola Unity Catalog secara otomatis, sehingga Anda tidak perlu menjadwalkan pemeliharaan tabel. Fitur ini juga menjaga statistik yang digunakan oleh optimizer berbasis biaya tetap diperbarui. Untuk memeriksa apakah fitur tersebut diaktifkan untuk akun Anda, lihat Verifikasi apakah optimasi prediktif diaktifkan.

Optimasi yang Anda konfigurasikan

Optimasi ini mengharuskan Anda untuk mengaktifkannya, menyetel, atau mengubah konfigurasi tabel. Gunakan itu saat beban kerja membutuhkan perilaku yang tidak tercakup oleh default.

  • Dukungan arsip: Gunakan ketika kebijakan siklus hidup cloud memindahkan file tabel lama ke tingkat penyimpanan arsip untuk mengurangi biaya penyimpanan. Dukungan pengarsipan memberi tahu Azure Databricks untuk mengabaikan file yang lebih tua dari periode tertentu, sehingga kebijakan siklus hidup tidak merusak kueri yang hanya membaca data terbaru. Fitur ini sedang dalam Pratinjau Publik.
  • Range join: Gunakan saat join menggunakan kondisi titik-dalam-interval atau tumpang-tindih interval. Databricks SQL mengoptimalkan range join secara otomatis. Pada lingkungan compute lainnya, tuning range join dengan join hint atau konfigurasi sesi.
  • Tingkat isolasi dan konflik tulis: Gunakan saat penulisan secara bersamaan pada tabel yang sama saling bertentangan, atau ketika beban kerja membutuhkan jaminan yang lebih ketat daripada tingkat isolasi WriteSerializable default. isolasi serializable mengurangi throughput untuk penulisan bersamaan. Konkurensi tingkat baris secara otomatis menyelesaikan banyak konflik antara penulisan bersamaan pada tabel yang memenuhi persyaratannya.
  • Indeks pencarian teks penuh: Digunakan saat kueri menelusuri kolom teks untuk substring atau kata dengan fungsi search atau isearch. Indeks mengabaikan file yang tidak dapat berisi baris yang cocok. Fitur ini ada di Beta.

Catatan

Indeks filter bloom adalah fitur skip data yang sudah ditinggalkan. Mereka menambah beban menulis dan sulit untuk disetel. Jika tabel Anda memilikinya, lihat indeks filter Bloom (usang) untuk mengganti dan menghapusnya.

Fitur performa lainnya

  • Fungsi tingkat tinggi memiliki kinerja bawaan yang dioptimalkan untuk banyak operasi yang tidak memiliki operator Spark umum. Fungsi orde lebih tinggi berkinerja lebih baik daripada fungsi yang ditentukan pengguna.
  • Azure Databricks memiliki operator bawaan dan sintaks khusus untuk bekerja dengan tipe data kompleks, termasuk array, struct, dan string JSON.
  • Spark SQL melakukan query pada string JSON tanpa memparsenya terlebih dahulu.
  • Untuk mengontrol ukuran file data yang dihasilkan oleh operasi penulisan, lihat Kontrol ukuran file data.
  • Untuk panduan desain dan pemeliharaan tabel, lihat Praktik terbaik: Delta Lake.

Diagnosis beban kerja yang lambat atau berbiaya tinggi

Jika beban kerja lebih lambat atau lebih mahal dari yang diperkirakan dan Anda tidak tahu alasannya, gunakan UI Spark untuk menemukan hambatan sebelum Anda mengubah konfigurasi. Lihat Mendiagnosis masalah biaya dan performa menggunakan Spark UI.