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 bármely parquet-tábla. | 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 számításhoz. 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.