Optimera prestanda med cachelagring

Delta-cachen påskyndar data läsningar genom att skapa kopior av fjärrfiler i noders lokala lagrings utrymmen med ett snabbt mellanliggande data format. Data cachelagras automatiskt när en fil måste hämtas från en annan plats. Efterföljande läsningar av samma data utförs sedan lokalt, vilket leder till betydligt bättre Läs hastighet.

Delta-cachen har stöd för läsning av Parquet-filer i DBFS, HDFS, Azure Blob Storage, Azure Data Lake Storage Gen1 och Azure Data Lake Storage Gen2. Det stöder inte andra lagrings format som CSV, JSON och Orc.

Anteckning

Delta-cachen fungerar för alla Parquet-filer och är inte begränsad till i delta Lake-format -filer.

Delta-och Apache Spark- cachelagring

Det finns två typer av cachelagring som är tillgängliga i Azure Databricks: delta-cachelagring och Apache Spark cachelagring. Här följer egenskaperna för varje typ:

  • Typ av lagrade data: delta-cachen innehåller lokala kopior av fjärrdata. Det kan förbättra prestandan för en mängd olika frågor, men kan inte användas för att lagra resultat från valfria under frågor. Spark-cachen kan lagra resultatet av alla under frågor och data som lagras i andra format än Parquet (till exempel CSV, JSON och ORC).
  • Prestanda: data som lagras i delta-cachen kan läsas och drivas snabbare än data i Spark-cachen. Detta beror på att delta-cachen använder effektiva dekomprimerings-algoritmer och utvärderar data i optimalt format för ytterligare bearbetning med hjälp av kodgenerering i hela fasen.
  • Automatisk vs manuellt kontroll: när delta-cachen är aktive rad läggs data som måste hämtas från en fjärrkälla automatiskt till i cacheminnet. Den här processen är helt transparent och kräver inte någon åtgärd. För att läsa in data i cachen i förväg kan du dock använda CACHE kommandot (se cachelagra en delmängd av data). När du använder Spark-cachen måste du manuellt ange de tabeller och frågor som ska cachelagras.
  • Disk vs Memory-based: delta-cachen lagras helt och hållet på den lokala disken, så minnet tas inte bort från andra åtgärder i Spark. På grund av den höga Läs hastigheten hos modern SSD kan delta-cachen vara helt diskbaserad utan en negativ inverkan på prestandan. Spark-cachen använder däremot minne.

Anteckning

Du kan använda delta-cachelagring och Apache Spark cachelagring samtidigt.

Sammanfattning

I följande tabell sammanfattas viktiga skillnader mellan delta och Apache Spark cachelagring så att du kan välja det bästa verktyget för ditt arbets flöde:

Funktion Delta-cache Apache Spark cache
Lagrad som Lokala filer på en arbets nod. Minnes intern block, men det är beroende av lagrings nivå.
Tillämpas på Alla Parquet-tabeller som lagras på WASB och andra fil system. Valfri RDD eller DataFrame.
Utlöses Automatiskt vid den första läsningen (om cacheminnet är aktiverat). Manuellt kräver kod ändringar.
Utvärderas Lazy. Lazy.
Tvinga cache CACHE och SELECT .cache + alla åtgärder för att materialisera cachen och .persist .
Tillgänglighet Kan aktive ras eller inaktive ras med konfigurations flaggor, inaktiverat på vissa nodtyper. Alltid tillgängligt.
Avlägsnas Automatiskt på alla fil ändringar, manuellt när du startar om ett kluster. Automatiskt på LRU, manuellt med unpersist .

Konsekvens i Delta-cachelagring

Delta-cachen identifierar automatiskt när datafiler skapas eller tas bort och innehållet uppdateras i enlighet med detta. Du kan skriva, ändra och ta bort tabell data utan att explicit validera cachelagrade data.

Delta-cachen identifierar automatiskt filer som har ändrats eller skrivs över efter cachelagring. Alla inaktuella poster inaktive ras automatiskt och avlägsnas från cachen.

Använd delta- cachelagring

Om du vill använda delta-cachelagring väljer du en snabbare arbets typ för delta-cache när du konfigurerar klustret.

Cache-accelererat kluster

Delta-cachen är aktive rad som standard och konfigurerad för att använda högst hälften av utrymmet som finns på den lokala SSD som medföljer arbetsnoderna.

Konfigurations alternativ finns i Konfigurera delta-cachen.

Cachelagra en delmängd av data

Om du uttryckligen vill välja en delmängd av data som ska cachelagras, använder du följande syntax:

CACHE SELECT column_name[, column_name, ...] FROM [db_name.]table_name [ WHERE boolean_expression ]

Du behöver inte använda det här kommandot för att delta-cachen ska fungera korrekt (data cachelagras automatiskt vid första åtkomst). Men det kan vara användbart när du behöver konsekventa frågeresultat.

Exempel och mer information finns i

Övervaka Delta-cachen

Du kan kontrol lera aktuellt tillstånd för delta-cachen på varje körning på fliken lagring i Spark-ANVÄNDARGRÄNSSNITTET.

Övervaka delta-cache

När en nod når 100% disk användning tar Cachehanteraren bort de minst nyligen använda cacheposter för att frigöra utrymme för nya data.

Konfigurera delta- cachen

Tips

Azure Databricks rekommenderar att du väljer cache-accelererade arbets instans typer för dina kluster. Sådana instanser konfigureras automatiskt optimalt för delta-cachen.

Konfigurera disk användning

Om du vill konfigurera hur delta-cachen använder arbetsnodernas lokala lagring, anger du följande konfigurations inställningar för Spark när klustret skapas:

  • spark.databricks.io.cache.maxDiskUsage – disk utrymme per nod reserverat för cachelagrade data i byte
  • spark.databricks.io.cache.maxMetaDataCache – disk utrymme per nod reserverat för cachelagrade metadata i byte
  • spark.databricks.io.cache.compression.enabled – ska cachelagrade data lagras i komprimerat format

Exempel på konfiguration:

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

Aktivera delta- cachen

Om du vill aktivera och inaktivera delta-cachen kör du:

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

Att inaktivera cachen innebär inte att de data som redan finns i den lokala lagringen släpps. I stället förhindrar frågor från att lägga till nya data i cachen och läsa data från cachen.