Teljesítmény optimalizálása gyorsítótárazással az Azure Databricksben

Az Azure Databricks lemezes gyorsítótárazással gyorsítja fel az adatolvasást a távoli Parquet-adatfájlok másolatainak csomópontok helyi tárolójában történő létrehozásával, gyors köztes adatformátum használatával. Az adatok automatikusan gyorsítótárazva lesznek, amikor egy távoli helyről le kell kérni egy fájlt. Ezután ezeknek az adatoknak a későbbi olvasása már helyileg történik, ami jelentős mértékben javítja az olvasási sebességet. A gyorsítótár minden Parquet-adatfájlhoz (beleértve a Delta Lake-táblákat is) működik.

Feljegyzés

Az SQL Warehouse-ban és a Databricks Runtime 14.2-ben és újabb verziókban a CACHE SELECT parancs figyelmen kívül lesz hagyva. Ehelyett továbbfejlesztett lemez-gyorsítótárazási algoritmust használ.

Lemezgyorsítótárra átnevezett delta-gyorsítótár

Az Azure Databricks lemez gyorsítótárazását korábban Delta-gyorsítótárnak és DBIO-gyorsítótárnak nevezték. A lemez gyorsítótárazási viselkedése egy védett Azure Databricks-funkció. Ez a névváltoztatás a Delta Lake protokoll részét képező zavart próbálja feloldani.

Lemezgyorsítótár és Spark-gyorsítótár

Az Azure Databricks lemezgyorsítótára eltér az Apache Spark gyorsítótárától. Az Azure Databricks az automatikus lemez gyorsítótárazását javasolja.

Az alábbi táblázat összefoglalja a lemez és az Apache Spark-gyorsítótárazás közötti főbb különbségeket, így kiválaszthatja a munkafolyamathoz leginkább megfelelő eszközt:

Szolgáltatás lemezgyorsítótár Apache Spark-gyorsítótár
Tárolás másként Helyi fájlok egy feldolgozó csomóponton. Memóriabeli blokkok, de a tárolási szinttől függ.
Alkalmazva erre Az ABFS-en és más fájlrendszereken tárolt parquet-táblák. Bármilyen DataFrame vagy RDD.
Triggerrel indított Automatikusan, az első olvasáskor (ha a gyorsítótár engedélyezve van). Manuálisan kódmódosítást igényel.
Értékelni Lustán. Lustán.
Elérhetőség A konfigurációs jelzőkkel engedélyezhető vagy letiltható, alapértelmezés szerint engedélyezve bizonyos csomóponttípusokon. Mindig elérhető.
Kiürítve Automatikusan LRU módon vagy bármilyen fájlmódosításkor, manuálisan a fürt újraindításakor. Automatikusan LRU módon, manuálisan a unpersist.

Lemezgyorsítótár-konzisztencia

A lemezgyorsítótár automatikusan észleli az adatfájlok létrehozását, törlését, módosítását vagy felülírását, és ennek megfelelően frissíti annak tartalmát. A táblaadatok írásához, módosításához és törléséhez nincs szükség a gyorsítótárazott adatok explicit érvénytelenítésére. A rendszer automatikusan érvényteleníti és kiüríti az elavult bejegyzéseket a gyorsítótárból.

Példánytípusok kiválasztása lemez gyorsítótárazásához

A lemez gyorsítótárazásának ajánlott (és legegyszerűbb) módja, ha SSD-kötetekkel rendelkező feldolgozótípust választ a fürt konfigurálásakor. Ezek a feldolgozók engedélyezve vannak és konfigurálva vannak a lemez gyorsítótárazásához.

A lemezgyorsítótár úgy van konfigurálva, hogy a munkavégző csomópontokhoz biztosított helyi SSD-ken rendelkezésre álló terület legfeljebb felét használja. A konfigurációs beállításokat a lemezgyorsítótár konfigurálása című témakörben talál.

A lemezgyorsítótár konfigurálása

Az Azure Databricks azt javasolja, hogy válasszon gyorsítótárazott feldolgozópéldány-típusokat a fürtökhöz. Az ilyen példányok automatikusan optimálisan vannak konfigurálva a lemezgyorsítótárhoz.

Feljegyzés

A feldolgozó leszerelésekor a feldolgozón tárolt Spark-gyorsítótár elveszik. Ha tehát az automatikus skálázás engedélyezve van, a gyorsítótár instabilitást jelent. A Sparknak ezután szükség szerint újra kell olvasnia a hiányzó partíciókat a forrásból.

Lemezhasználat konfigurálása

Annak konfigurálásához, hogy a lemezgyorsítótár hogyan használja a feldolgozó csomópontok helyi tárolóját, adja meg a következő Spark-konfigurációs beállításokat a fürt létrehozása során:

  • spark.databricks.io.cache.maxDiskUsage: a gyorsítótárazott adatok számára fenntartott csomópontonkénti lemezterület bájtban
  • spark.databricks.io.cache.maxMetaDataCache: a gyorsítótárazott metaadatok számára fenntartott csomópontonkénti lemezterület bájtban
  • spark.databricks.io.cache.compression.enabled: ha a gyorsítótárazott adatokat tömörített formátumban kell tárolni

Példakonfiguráció:

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

A lemezgyorsítótár engedélyezése vagy letiltása

A lemezgyorsítótár engedélyezéséhez és letiltásához futtassa a következőt:

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

A gyorsítótár letiltása nem eredményezi a már a helyi tárolóban lévő adatok elvetását. Ehelyett megakadályozza, hogy a lekérdezések új adatokat vegyenek fel a gyorsítótárba, és adatokat olvasnak a gyorsítótárból.