Prestaties optimaliseren met caching in Azure Databricks
Azure Databricks maakt gebruik van schijfcaching om gegevensleesbewerkingen te versnellen door kopieƫn te maken van externe Parquet-gegevensbestanden in de lokale opslag van knooppunten met behulp van een snelle tussenliggende gegevensindeling. De gegevens worden automatisch in de cache opgeslagen wanneer een bestand moet worden opgehaald van een externe locatie. Opeenvolgende leesbewerkingen van dezelfde gegevens worden vervolgens lokaal uitgevoerd, wat resulteert in een aanzienlijk verbeterde leessnelheid. De cache werkt voor alle Parquet-gegevensbestanden (inclusief Delta Lake-tabellen).
Notitie
In SQL Warehouses en Databricks Runtime 14.2 en hoger wordt de CACHE SELECT
opdracht genegeerd. In plaats daarvan wordt een verbeterd algoritme voor schijfcaching gebruikt.
Delta-cache hernoemd naar schijfcache
Schijfcaching in Azure Databricks werd voorheen de Delta-cache en de DBIO-cache genoemd. Cachegedrag van schijven is een eigen Azure Databricks-functie. Deze naamwijziging probeert verwarring op te lossen die deel uitmaakte van het Delta Lake-protocol.
Schijfcache versus Spark-cache
De Azure Databricks-schijfcache verschilt van Apache Spark-caching. Azure Databricks raadt aan automatische schijfcaching te gebruiken.
De volgende tabel bevat een overzicht van de belangrijkste verschillen tussen schijf- en Apache Spark-caching, zodat u het beste hulpprogramma voor uw werkstroom kunt kiezen:
Functie | schijfcache | Apache Spark-cache |
---|---|---|
Opgeslagen als | Lokale bestanden op een werkknooppunt. | In-memory blokken, maar dit is afhankelijk van het opslagniveau. |
Toegepast op | Elke Parquet-tabel die is opgeslagen op ABFS en andere bestandssystemen. | Elk DataFrame of RDD. |
Geactiveerd | Automatisch bij de eerste leesbewerking (als cache is ingeschakeld). | Handmatig vereist codewijzigingen. |
Geƫvalueerd | Lui. | Lui. |
Beschikbaarheid | Kan worden ingeschakeld of uitgeschakeld met configuratievlagmen, standaard ingeschakeld voor bepaalde knooppunttypen. | Altijd beschikbaar. |
Verwijderd | Automatisch op LRU-wijze of bij een bestandswijziging, handmatig bij het opnieuw opstarten van een cluster. | Automatisch op LRU-wijze, handmatig met unpersist . |
Consistentie van schijfcache
De schijfcache detecteert automatisch wanneer gegevensbestanden worden gemaakt, verwijderd, gewijzigd of overschreven en werkt de inhoud dienovereenkomstig bij. U kunt tabelgegevens schrijven, wijzigen en verwijderen zonder dat u gegevens in de cache expliciet ongeldig hoeft te maken. Verouderde vermeldingen worden automatisch ongeldig gemaakt en verwijderd uit de cache.
Instantietypen selecteren om schijfcaching te gebruiken
De aanbevolen (en eenvoudigste) manier om schijfcaching te gebruiken, is door een werkroltype met SSD-volumes te kiezen wanneer u uw cluster configureert. Dergelijke werkrollen zijn ingeschakeld en geconfigureerd voor schijfcaching.
De schijfcache is geconfigureerd voor het gebruik van maximaal de helft van de ruimte die beschikbaar is op de lokale SCHIJVEN die bij de werkknooppunten worden geleverd. Zie De schijfcache configureren voor configuratieopties.
De schijfcache configureren
Azure Databricks raadt u aan om werkroltypen met een versnelde cache te kiezen voor uw rekenproces. Dergelijke exemplaren worden automatisch optimaal geconfigureerd voor de schijfcache.
Notitie
Wanneer een werkrol buiten gebruik wordt gesteld, gaat de Spark-cache die op die werkrol is opgeslagen verloren. Dus als automatisch schalen is ingeschakeld, is er enige instabiliteit met de cache. Spark moet vervolgens indien nodig ontbrekende partities opnieuw lezen uit de bron.
Schijfgebruik configureren
Als u wilt configureren hoe de schijfcache gebruikmaakt van de lokale opslag van de werkknooppunten, geeft u de volgende Spark-configuratie-instellingen op tijdens het maken van het cluster:
spark.databricks.io.cache.maxDiskUsage
: schijfruimte per knooppunt gereserveerd voor gegevens in cache in bytesspark.databricks.io.cache.maxMetaDataCache
: schijfruimte per knooppunt gereserveerd voor metagegevens in cache in bytesspark.databricks.io.cache.compression.enabled
: moet de gegevens in de cache worden opgeslagen in gecomprimeerde indeling
Voorbeeldconfiguratie:
spark.databricks.io.cache.maxDiskUsage 50g
spark.databricks.io.cache.maxMetaDataCache 1g
spark.databricks.io.cache.compression.enabled false
De schijfcache in- of uitschakelen
Als u de schijfcache wilt in- en uitschakelen, voert u het volgende uit:
spark.conf.set("spark.databricks.io.cache.enabled", "[true | false]")
Als u de cache uitschakelt, worden de gegevens die zich al in de lokale opslag bevinden, niet wegvallen. In plaats daarvan voorkomt u dat query's nieuwe gegevens aan de cache toevoegen en gegevens uit de cache lezen.