Mengoptimalkan performa dengan penembolokan di Azure Databricks

Azure Databricks menggunakan penembolokan disk untuk mempercepat pembacaan data dengan membuat salinan file data Parquet jarak jauh di penyimpanan lokal simpul menggunakan format data perantara yang cepat. Data di-cache secara otomatis setiap kali file harus diambil dari lokasi terpencil. Pembacaan berturut-turut dari data yang sama kemudian dilakukan secara lokal, yang menghasilkan kecepatan membaca yang meningkat secara signifikan. Cache berfungsi untuk semua file data Parquet (termasuk tabel Delta Lake).

Catatan

Di gudang SQL dan Databricks Runtime 14.2 ke atas, CACHE SELECT perintah diabaikan. Algoritma penembolokan disk yang ditingkatkan digunakan sebagai gantinya.

Cache Delta diganti namanya menjadi cache disk

Penembolokan disk di Azure Databricks sebelumnya disebut sebagai cache Delta dan cache DBIO. Perilaku penembolokan disk adalah fitur Azure Databricks eksklusif. Perubahan nama ini berusaha menyelesaikan kebingungan bahwa itu adalah bagian dari protokol Delta Lake.

Cache disk vs. cache Spark

Cache disk Azure Databricks berbeda dari penembolokan Apache Spark. Azure Databricks merekomendasikan penggunaan penembolokan disk otomatis.

Tabel berikut ini meringkas perbedaan utama antara disk dan penembolokan Apache Spark sehingga Anda dapat memilih alat terbaik untuk alur kerja Anda:

Fitur cache disk {i>Cache
Disimpan sebagai File lokal pada simpul pekerja. Blok dalam memori, tetapi itu tergantung pada tingkat penyimpanan.
Diterapkan ke Setiap tabel Parquet yang disimpan di ABFS dan sistem file lainnya. Setiap DataFrame atau RDD.
Dipicu Secara otomatis, pada pembacaan pertama (jika {i>cache Secara manual, memerlukan perubahan kode.
Dievaluasi Malas. Malas.
Ketersediaan Dapat diaktifkan atau dinonaktifkan dengan bendera konfigurasi, diaktifkan secara default pada jenis node tertentu. Selalu tersedia.
Diusir Secara otomatis dalam mode LRU atau pada perubahan file apa pun, secara manual saat menghidupkan ulang kluster. Secara otomatis dalam mode LRU, secara manual dengan unpersist.

Konsistensi cache disk

Cache disk secara otomatis mendeteksi kapan file data dibuat, dihapus, dimodifikasi, atau ditimpa dan memperbarui kontennya. Anda dapat menulis, memodifikasi, dan menghapus data tabel tanpa perlu membatalkan data yang di-{i>cache

Memilih jenis instans untuk menggunakan penembolokan disk

Cara yang direkomendasikan (dan term mudah) untuk menggunakan penembolokan disk adalah dengan memilih jenis pekerja dengan volume SSD saat Anda mengonfigurasi kluster Anda. Pekerja tersebut diaktifkan dan dikonfigurasi untuk penembolokan disk.

Cache disk dikonfigurasi untuk menggunakan paling banyak setengah ruang yang tersedia pada SSD lokal yang disediakan dengan simpul pekerja. Untuk opsi konfigurasi, lihat Mengonfigurasi cache disk.

Mengonfigurasi cache disk

Azure Databricks merekomendasikan agar Anda memilih jenis instans pekerja yang dipercepat cache untuk kluster Anda. Instans tersebut secara otomatis dikonfigurasi secara optimal untuk cache disk.

Catatan

Ketika pekerja dinonaktifkan, cache Spark yang disimpan pada pekerja tersebut hilang. Jadi, jika penskalaan otomatis diaktifkan, ada beberapa ketidakstabilan dengan cache. Spark kemudian perlu dibaca ulang partisi yang hilang dari sumber sesuai kebutuhan.

Konfigurasikan halaman {i>disk

Untuk mengonfigurasi bagaimana cache disk menggunakan penyimpanan lokal simpul pekerja, tentukan pengaturan konfigurasi Spark berikut selama pembuatan kluster:

  • spark.databricks.io.cache.maxDiskUsage: ruang disk per simpul yang dicadangkan untuk data yang di-cache dalam byte
  • spark.databricks.io.cache.maxMetaDataCache: ruang disk per simpul yang dicadangkan untuk metadata yang di-cache dalam byte
  • spark.databricks.io.cache.compression.enabled: jika data yang di-cache disimpan dalam format terkompresi

Konfigurasi contoh:

spark.databricks.io.cache.maxDiskUsage 50g
spark.databricks.io.cache.maxMetaDataCache 1g
spark.databricks.io.cache.compression.enabled false

Mengaktifkan atau menonaktifkan cache disk

Untuk mengaktifkan dan menonaktifkan cache disk, jalankan:

spark.conf.set("spark.databricks.io.cache.enabled", "[true | false]")

Menonaktifkan {i>cachecachecache