Intelligente cache in Azure Synapse Analytics
De Intelligent Cache werkt naadloos achter de schermen en slaat gegevens in de cache op om de uitvoering van Spark te versnellen terwijl deze wordt gelezen vanuit uw ADLS Gen2-data lake. Ook worden wijzigingen in de onderliggende bestanden automatisch gedetecteerd en worden de bestanden in de cache automatisch vernieuwd, zodat u beschikt over de meest recente gegevens en wanneer de cachegrootte de limiet bereikt, worden de minst leesgegevens automatisch vrijgegeven om ruimte te maken voor recentere gegevens. Deze functie verlaagt de totale eigendomskosten door de prestaties te verbeteren tot 65% op latere leesbewerkingen van de bestanden die zijn opgeslagen in de beschikbare cache voor Parquet-bestanden en 50% voor CSV-bestanden.
Wanneer u een query uitvoert op een bestand of tabel vanuit uw Data Lake, wordt de Apache Spark-engine in Synapse aangeroepen naar de externe ADLS Gen2-opslag om de onderliggende bestanden te lezen. Bij elke queryaanvraag om dezelfde gegevens te lezen, moet de Spark-engine een aanroep uitvoeren naar externe ADLS Gen2-opslag. Met dit redundante proces wordt latentie toegevoegd aan de totale verwerkingstijd. Spark biedt een cachefunctie die u handmatig moet instellen en de cache vrijgeven om de latentie te minimaliseren en de algehele prestaties te verbeteren. Dit kan echter leiden tot verouderde gegevens als de onderliggende gegevens veranderen.
De Synapse Intelligent Cache vereenvoudigt dit proces door elke leesbewerking in de toegewezen cacheopslagruimte op elk Spark-knooppunt automatisch in de cache op te slaan. Elke aanvraag voor een bestand controleert of het bestand in de cache aanwezig is en vergelijkt de tag van de externe opslag om te bepalen of het bestand verouderd is. Als het bestand niet bestaat of als het bestand verouderd is, leest Spark het bestand en slaat het op in de cache. Wanneer de cache vol raakt, wordt het bestand met de oudste laatste toegangstijd uit de cache verwijderd om recentere bestanden mogelijk te maken.
De Synapse-cache is één cache per knooppunt. Als u een middelgrote knooppunt gebruikt en met twee kleine uitvoerders op één middelgrote knooppunt uitvoert, delen deze twee uitvoerders dezelfde cache.
De cache in- of uitschakelen
De cachegrootte kan worden aangepast op basis van het percentage van de totale schijfgrootte die beschikbaar is voor elke Apache Spark-pool. De cache is standaard ingesteld op uitgeschakeld, maar het is net zo eenvoudig als het verplaatsen van de schuifbalk van 0 (uitgeschakeld) naar het gewenste percentage voor uw cachegrootte om deze in te schakelen. We reserveren minimaal 20% van de beschikbare schijfruimte voor gegevens in willekeurige volgorde. Voor willekeurige werkbelastingen kunt u de cachegrootte minimaliseren of de cache uitschakelen. We raden u aan om te beginnen met een cachegrootte van 50% en zo nodig aan te passen. Het is belangrijk om te weten dat als uw workload veel schijfruimte op de lokale SSD vereist voor shuffle of RDD-caching, u kunt overwegen om de cachegrootte te verkleinen om de kans op fouten te verminderen vanwege onvoldoende opslag. De werkelijke grootte van de beschikbare opslag en de cachegrootte op elk knooppunt zijn afhankelijk van de knooppuntfamilie en knooppuntgrootte.
Cache inschakelen voor nieuwe Spark-pools
Wanneer u een nieuwe Spark-pool maakt, bladert u onder het tabblad Aanvullende instellingen naar de schuifregelaar Intelligent Cache die u kunt verplaatsen naar de gewenste grootte om de functie in te schakelen.
Cache in- of uitschakelen voor bestaande Spark-pools
Voor bestaande Spark-pools bladert u naar de schaalinstellingen van uw Apache Spark-pool die u wilt inschakelen door de schuifregelaar naar een waarde van meer dan 0 te verplaatsen of uit te schakelen door de schuifregelaar naar 0 te verplaatsen.
Cachegrootte wijzigen voor bestaande Spark-pools
Als u de grootte van een pool voor intelligente cache wilt wijzigen, moet u opnieuw opstarten afdwingen als de pool actieve sessies heeft. Als de Spark-pool een actieve sessie heeft, worden er nieuwe instellingen geforceerd weergegeven. Klik op het selectievakje en selecteer Toepassen om de sessie automatisch opnieuw op te starten.
De cache in- en uitschakelen in de sessie
Schakel de Intelligent Cache in een sessie eenvoudig uit door de volgende code uit te voeren in uw notebook:
%spark
spark.conf.set("spark.synapse.vegas.useCache", "false")
%pyspark
spark.conf.set('spark.synapse.vegas.useCache', 'false')
En inschakelen door het volgende uit te voeren:
%spark
spark.conf.set("spark.synapse.vegas.useCache", "true")
%pyspark
spark.conf.set('spark.synapse.vegas.useCache', 'true')
Wanneer gebruikt u de intelligente cache en wanneer niet?
Deze functie profiteert van het volgende:
Voor uw workload moet hetzelfde bestand meerdere keren worden gelezen en de bestandsgrootte kan in de cache passen.
Uw workload maakt gebruik van Delta-tabellen, parquet-bestandsindelingen en CSV-bestanden.
U gebruikt Apache Spark 3 of hoger in Azure Synapse.
U ziet het voordeel van deze functie niet als:
U leest een bestand dat de cachegrootte overschrijdt, omdat het begin van de bestanden kan worden verwijderd en volgende query's de gegevens uit de externe opslag moeten verkluizen. In dit geval ziet u geen voordelen van de Intelligente cache en wilt u mogelijk de cachegrootte en/of knooppuntgrootte vergroten.
Voor uw workload zijn grote hoeveelheden willekeurige volgorde vereist. Als u de Intelligente cache uitschakelt, wordt er ruimte vrijgemaakt om te voorkomen dat uw taak mislukt vanwege onvoldoende opslagruimte.
U gebruikt een Spark 3.1-pool. U moet uw pool upgraden naar de nieuwste versie van Spark.
Meer informatie
Zie de volgende artikelen voor meer informatie over Apache Spark:
- Wat is Apache Spark?
- Basisconcepten van Apache Spark
- Azure Synapse Runtime voor Apache Spark 3.2
- Grootte en configuraties van Apache Spark-pools
Meer informatie over het configureren van Spark-sessie-instellingen
Volgende stappen
Een Apache Spark-pool biedt opensource-rekenmogelijkheden voor big data, waar gegevens kunnen worden geladen, gemodelleerd, verwerkt en gedistribueerd voor sneller analyse-inzicht. Ga naar de volgende zelfstudies voor meer informatie over het maken van een apache Spark-workloads: