Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Odczyt danych z pamięci obiektowej w chmurze jest wolniejszy niż odczyt z lokalnego dysku. Bez buforowania zapytania i notatniki czytające te same pliki danych Parquet pobierają je za każdym razem z magazynu obiektów w chmurze.
Azure Databricks wykorzystuje pamięć podręczną dyskową do przyspieszenia odczytów danych. Gdy węzeł pobiera plik danych Parquet ze zdalnej pamięci, automatycznie przechowuje kopię w pamięci lokalnej w szybkim formacie pośrednim. Późniejsze odczyty tych samych danych są wykonywane lokalnie i są znacznie szybsze. Pamięć podręczna działa dla wszystkich plików danych Parquet, w tym tabel Delta Lake.
Notatka
W magazynach SQL i Databricks Runtime 14.2 lub nowszych polecenie CACHE SELECT jest ignorowane. Zamiast tego jest używany ulepszony algorytm buforowania dysku.
Najlepsze praktyki
Pamięć podręczna dysku najbardziej pomaga przy obciążeniach, które wielokrotnie odczytują te same dane, na przykład powtarzające się lub iteracyjne zapytania na tych samych tabelach. Azure Databricks automatycznie to włącza na typach instancji worker, które go obsługują. Aby przyspieszyć odczyty pamięci podręcznej dysku, stosuj następujące praktyki:
- Wybierz typ instancji roboczej, który obsługuje buforowanie dysku. Zobacz Wybieranie typów wystąpień, aby używać buforowania dysku.
- Używaj pamięci podręcznej dysku zamiast pamięci podręcznej Apache Spark do wielokrotnego odczytu danych Parquet i Delta Lake. Zobacz Porównaj pamięć podręczną dysku i pamięć podręczną Spark.
Zmieniono nazwę Delta cache na pamięć podręczną dysku
Buforowanie dyskowe w usłudze Azure Databricks było wcześniej nazywane pamięcią podręczną delta i pamięcią podręczną DBIO. Zachowanie buforowania dysku to zastrzeżona funkcja usługi Azure Databricks. Ta zmiana nazwy ma na celu wyeliminowanie nieporozumień co do tego, że była ona częścią protokołu Delta Lake.
Porównaj pamięć podręczną dysku i pamięć podręczną Spark
Pamięć podręczna dysku usługi Azure Databricks różni się od buforowania platformy Apache Spark. Databricks zaleca automatyczne buforowanie dysku.
W poniższej tabeli przedstawiono podsumowanie najważniejszych różnic między buforowaniem na dysku i buforowaniem w Apache Spark, dzięki czemu można wybrać najlepsze narzędzie dla przepływu pracy:
| Funkcja | pamięć podręczna dysku | Pamięć podręczna Apache Spark |
|---|---|---|
| Przechowywane jako | Pliki lokalne w węźle roboczym. | Bloki są w pamięci, ale to zależy od poziomu przechowywania. |
| Ma zastosowanie do | Każda tabela Parquet przechowywana w systemach plików ABFS i innych systemach plików. | Dowolna ramka danych lub RDD. |
| Wyzwolono | Automatycznie podczas pierwszego odczytu (jeśli pamięć podręczna jest włączona). | Ręcznie: wymaga zmian w kodzie. |
| Oceniono | Leniwie. | Leniwie. |
| Dostępność | Domyślnie włączone na niektórych typach węzłów. Włączasz lub wyłączasz to za pomocą flag konfiguracyjnych. | Zawsze dostępne. |
| Usunięty | Automatycznie w trybie LRU lub przy każdej zmianie pliku, ręcznie podczas ponownego uruchamiania klastra. | Automatycznie w sposób LRU, ręcznie za pomocą polecenia unpersist. |
Spójność pamięci podręcznej dysku
Pamięć podręczna dysku automatycznie wykrywa, kiedy pliki danych są tworzone, usuwane, modyfikowane lub nadpisywane i aktualizuje odpowiednio jej zawartość. Dane tabeli można zapisywać, modyfikować i usuwać bez konieczności jawnego unieważnienia danych w pamięci podręcznej. Wszystkie nieaktualne wpisy są automatycznie unieważniane i usuwane z pamięci podręcznej.
Wybieranie typów wystąpień do użycia buforowania dysku
Zalecanym (i najprostszym) sposobem użycia buforowania dysku jest wybranie typu węzła roboczego z woluminami SSD podczas konfigurowania klastra. Takie elementy robocze są włączone i skonfigurowane do buforowania dysku.
Pamięć podręczna dysku jest skonfigurowana do używania co najwyżej połowy miejsca dostępnego na lokalnych dyskach SSD dostarczanych z węzłami roboczymi. Aby uzyskać informacje o opcjach konfiguracji, zobacz Konfigurowanie pamięci podręcznej dysku.
Konfigurowanie pamięci podręcznej dysku
Databricks zaleca wybieranie typów instancji roboczych z akceleracją pamięci podręcznej do obliczeń. Takie instancje są automatycznie konfigurowane optymalnie dla pamięci podręcznej dysku.
Notatka
Gdy węzeł roboczy zostanie zlikwidowany, pamięć podręczna Spark przechowywana na tym węźle roboczym zostanie utracona. Jeśli więc skalowanie automatyczne jest włączone, istnieje pewna niestabilność w pamięci podręcznej. Platforma Spark musiałaby następnie ponownie odczytać brakujące partycje ze źródła zgodnie z potrzebami.
Konfigurowanie wykorzystania dysku
Aby skonfigurować sposób, w jaki pamięć podręczna dyskowa wykorzystuje lokalną pamięć masową węzłów roboczych, określ następujące ustawienia konfiguracji Spark podczas tworzenia klastra:
-
spark.databricks.io.cache.maxDiskUsage: miejsce na dysku na węzeł zarezerwowane dla buforowanych danych w bajtach -
spark.databricks.io.cache.maxMetaDataCache: miejsce na dysku na węzeł zarezerwowane dla buforowanych metadanych w bajtach -
spark.databricks.io.cache.compression.enabled: czy buforowane dane powinny być przechowywane w formacie skompresowanym
Przykładowa konfiguracja:
spark.databricks.io.cache.maxDiskUsage 50g
spark.databricks.io.cache.maxMetaDataCache 1g
spark.databricks.io.cache.compression.enabled false
Włącz lub wyłącz pamięć podręczną dysku
Aby zobaczyć aktualne ustawienie pamięci podręcznej dysku, uruchom następująco:
spark.conf.get("spark.databricks.io.cache.enabled")
Aby włączyć i wyłączyć pamięć podręczną dysku, uruchom polecenie:
spark.conf.set("spark.databricks.io.cache.enabled", "[true | false]")
Wyłączenie pamięci podręcznej nie powoduje usunięcia danych, które są już w magazynie lokalnym. Zamiast tego zapobiega ona dodawaniu nowych danych do pamięci podręcznej i odczytywaniu danych z pamięci podręcznej.