Azure Databricks'te önbelleğe alma ile performansı iyileştirme

Azure Databricks, hızlı bir ara veri biçimi kullanarak düğümlerin yerel depolama alanında uzak Parquet veri dosyalarının kopyalarını oluşturarak veri okumalarını hızlandırmak için disk önbelleğe alma özelliğini kullanır. Uzak konumdan bir dosyanın getirilmesi gerektiğinde veriler otomatik olarak önbelleğe alınır. Daha sonra aynı verilerin ardışık okumaları yerel olarak gerçekleştirilir ve bu da okuma hızının önemli ölçüde artmasıyla sonuçlanır. Önbellek tüm Parquet veri dosyaları (Delta Lake tabloları dahil) için çalışır.

Not

SQL ambarlarında ve Databricks Runtime 14.2 ve üstünde CACHE SELECT komut yoksayılır. Bunun yerine gelişmiş bir disk önbelleğe alma algoritması kullanılır.

Delta önbelleği disk önbelleği olarak yeniden adlandırıldı

Azure Databricks'te disk önbelleği, daha önce Delta önbelleği ve DBIO önbelleği olarak adlandırılırdı. Disk önbelleğe alma davranışı, özel bir Azure Databricks özelliğidir. Bu ad değişikliği, Delta Lake protokolünün bir parçası olduğu karışıklığını çözmeye çalışır.

Disk önbelleği ile Spark önbelleği karşılaştırması

Azure Databricks disk önbelleği Apache Spark önbelleğinden farklıdır. Azure Databricks, otomatik disk önbelleğinin kullanılmasını önerir.

Aşağıdaki tabloda, iş akışınız için en iyi aracı seçebilmeniz için disk ile Apache Spark önbelleğe alma arasındaki temel farklar özetlenir:

Özellik disk önbelleği Apache Spark önbelleği
Farklı depolanır Çalışan düğümündeki yerel dosyalar. Bellek içi bloklar, ancak depolama düzeyine bağlıdır.
Uygulama yeri ABFS ve diğer dosya sistemlerinde depolanan herhangi bir Parquet tablosu. Herhangi bir DataFrame veya RDD.
Tetiklenmiş otomatik olarak, ilk okumada (önbellek etkinse). El ile, kod değişiklikleri gerektirir.
Değerlendirilir Lazily. Lazily.
Kullanılabilirlik Belirli düğüm türlerinde varsayılan olarak etkin olan yapılandırma bayraklarıyla etkinleştirilebilir veya devre dışı bırakılabilir. Her zaman kullanılabilir.
Tahliye Bir küme yeniden başlatılırken LRU biçiminde veya herhangi bir dosya değişikliğinde el ile otomatik olarak. LRU biçiminde, ile unpersistel ile otomatik olarak.

Disk önbelleği tutarlılığı

Disk önbelleği veri dosyalarının ne zaman oluşturulduğunu, silindiğini, değiştirildiği veya üzerine yazıldığını otomatik olarak algılar ve içeriğini buna göre güncelleştirir. Önbelleğe alınan verileri açıkça geçersiz kılmanıza gerek kalmadan tablo verilerini yazabilir, değiştirebilir ve silebilirsiniz. Eski girdiler otomatik olarak geçersiz kılınır ve önbellekten çıkarılır.

Disk önbelleğini kullanmak için örnek türlerini seçme

Disk önbelleğini kullanmanın önerilen (ve en kolay) yolu, kümenizi yapılandırırken SSD birimlerine sahip bir çalışan türü seçmektir. Bu tür çalışanlar disk önbelleğe alma için etkinleştirilir ve yapılandırılır.

Disk önbelleği, çalışan düğümleriyle birlikte sağlanan yerel SSD'lerde kullanılabilir alanın büyük bölümünü kullanacak şekilde yapılandırılır. Yapılandırma seçenekleri için bkz . Disk önbelleğini yapılandırma.

Disk önbelleğini yapılandırma

Azure Databricks, işlem için önbellek hızlandırmalı çalışan örneği türlerini seçmenizi önerir. Bu tür örnekler disk önbelleği için otomatik olarak en uygun şekilde yapılandırılır.

Not

Bir çalışan kullanımdan kaldırıldığında, söz konusu çalışanda depolanan Spark önbelleği kaybolur. Bu nedenle otomatik ölçeklendirme etkinleştirildiyse önbellekte bazı kararlılıklar vardır. Daha sonra Spark'ın kaynaktan eksik bölümleri gerektiği gibi yeniden okuması gerekir.

Disk kullanımını yapılandırma

Disk önbelleğinin çalışan düğümlerinin yerel depolama alanını nasıl kullandığını yapılandırmak için küme oluşturma sırasında aşağıdaki Spark yapılandırma ayarlarını belirtin:

  • spark.databricks.io.cache.maxDiskUsage: Bayt cinsinden önbelleğe alınan veriler için ayrılmış düğüm başına disk alanı
  • spark.databricks.io.cache.maxMetaDataCache: Bayt cinsinden önbelleğe alınmış meta veriler için ayrılmış düğüm başına disk alanı
  • spark.databricks.io.cache.compression.enabled: önbelleğe alınan verilerin sıkıştırılmış biçimde depolanması gerekir

Örnek yapılandırma:

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

Disk önbelleğini etkinleştirme veya devre dışı bırakma

Disk önbelleğini etkinleştirmek ve devre dışı bırakmak için şunu çalıştırın:

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

Önbelleğin devre dışı bırakılması, yerel depolamada zaten bulunan verilerin bırakılmasına neden olmaz. Bunun yerine, sorguların önbelleğe yeni veri eklemesini ve önbellekten veri okumasını engeller.