Mengoptimalkan performa dengan caching di Azure Databricks

Membaca data dari penyimpanan objek cloud lebih lambat dibandingkan membaca dari disk lokal. Tanpa caching, kueri dan notebook yang membaca file data Parquet yang sama akan mengambilnya dari penyimpanan objek cloud setiap kali diakses.

Azure Databricks menggunakan caching disk untuk mempercepat pembacaan data. Ketika sebuah node mengambil file data Parquet dari penyimpanan jarak jauh, ia secara otomatis menyimpan salinannya di penyimpanan lokalnya dalam format perantara yang cepat. Pembacaan berikutnya atas data yang sama dijalankan secara lokal dan jauh lebih cepat. Cache berfungsi untuk semua file data Parquet, termasuk tabel Delta Lake.

Catatan

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

Praktik terbaik

Cache disk paling membantu dengan beban kerja yang membaca data yang sama berkali-kali, seperti kueri berulang atau iteratif pada tabel yang sama. Azure Databricks mengaktifkannya secara otomatis pada tipe instance pekerja yang mendukungnya. Untuk membantu cache disk mempercepat pembacaan, ikuti praktik berikut:

cache Delta diubah namanya menjadi cache disk

Cache disk di Azure Databricks sebelumnya disebut sebagai cache Delta dan cache DBIO. Perilaku penembolokan disk adalah fitur Azure Databricks hak milik. Perubahan nama ini berusaha menyelesaikan kebingungan bahwa hal ini merupakan bagian dari protokol Delta Lake.

Bandingkan cache disk dan cache Spark

cache disk pada Azure Databricks berbeda dari penembolokan Apache Spark. Databricks merekomendasikan penggunaan cache 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 tembolok disk cache Apache Spark
Disimpan sebagai File lokal pada simpul pekerja. Blok dalam memori, tetapi itu tergantung pada tingkat penyimpanan.
Diterapkan pada Setiap tabel Parquet yang disimpan di ABFS dan sistem file lainnya. Setiap DataFrame atau RDD.
Dipicu Secara otomatis, pada pembacaan pertama (jika cache diaktifkan). Secara manual, hal ini memerlukan perubahan kode.
Dievaluasi Dengan malas-malasan. Dengan malas-malasan.
Ketersediaan Diaktifkan secara bawaan pada tipe node tertentu. Anda mengaktifkan atau menonaktifkannya dengan flag konfigurasi. Selalu tersedia.
Diusir Secara otomatis dalam mode LRU atau setiap kali file berubah, secara manual saat memulai ulang kluster. Secara otomatis dalam mode LRU, secara manual dengan unpersist.

Pada komputasi serverless, df.cache() bekerja berbeda dari cache Apache Spark dalam tabel ini. Lihat Cache DataFrames pada komputasi serverless.

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 menginvalkan data cache secara eksplisit. Setiap entri yang usang secara otomatis dinyatakan tidak valid dan dibuang dari cache.

Memilih jenis instans untuk menggunakan penembolokan disk

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

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

Mengonfigurasi cache disk

Databricks merekomendasikan agar Anda memilih tipe instance worker cache-accelerated untuk komputasi Anda. Instans tersebut secara otomatis dikonfigurasi secara optimal untuk cache disk.

Catatan

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

Konfigurasikan penggunaan disk

Untuk mengonfigurasi bagaimana cache disk menggunakan penyimpanan lokal node pekerja, tentukan pengaturan konfigurasi Spark berikut saat pembuatan klaster:

  • 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: apakah data cache harus 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 melihat pengaturan cache disk saat ini, jalankan:

spark.conf.get("spark.databricks.io.cache.enabled")

Untuk mengaktifkan dan menonaktifkan cache disk, jalankan:

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

Menonaktifkan cache tidak mengakibatkan hilangnya data yang sudah ada di penyimpanan lokal. Sebaliknya, ini mencegah kueri menambahkan data baru ke cache dan membaca data dari cache.