Intelligente cache in Microsoft Fabric
De functie voor intelligente cache werkt naadloos achter de schermen en slaat gegevens in de cache op om de uitvoering van Apache Spark-taken in Microsoft Fabric te versnellen terwijl deze wordt gelezen vanuit uw OneLake- of Azure Data Lake Storage-opslag (ADLS) Gen2 via snelkoppelingen. Ook worden wijzigingen in de onderliggende bestanden automatisch gedetecteerd en worden de bestanden in de cache automatisch vernieuwd, zodat u de meest recente gegevens krijgt. Wanneer de cachegrootte de limiet bereikt, worden in de cache automatisch de minst leesgegevens vrijgegeven om ruimte te maken voor recentere gegevens. Deze functie verlaagt de totale eigendomskosten door de prestaties tot 60% te verbeteren bij latere leesbewerkingen van de bestanden die zijn opgeslagen in de beschikbare cache.
Wanneer de Apache Spark-engine in Microsoft Fabric een query uitvoert op een bestand of tabel vanuit uw Lakehouse, wordt de externe opslag aangeroepen om de onderliggende bestanden te lezen. Bij elke queryaanvraag om dezelfde gegevens te lezen, moet de Spark-engine telkens een aanroep uitvoeren naar externe opslag. Met dit redundante proces wordt latentie toegevoegd aan de totale verwerkingstijd. Spark heeft een cachevereiste die u handmatig moet instellen en vrijgeven om de latentie te minimaliseren en de algehele prestaties te verbeteren. Deze vereiste kan echter leiden tot verouderde gegevens als de onderliggende gegevens veranderen.
Intelligente cache vereenvoudigt het proces door elke leesbewerking automatisch in de cache op te slaan in de toegewezen cacheopslagruimte op elk Spark-knooppunt waar gegevensbestanden in de cache worden opgeslagen in SSD. Elke aanvraag voor een bestand controleert of het bestand bestaat in de lokale knooppuntcache 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 verwijderd uit de cache om recentere bestanden toe te staan.
Intelligente cache is één cache per knooppunt. Als u een middelgrote knooppunt gebruikt en met twee kleine uitvoerders op dat ene knooppunt uitvoert, delen de twee uitvoerders dezelfde cache. Met deze cache op gegevensbestandsniveau kunnen meerdere query's dezelfde cache gebruiken als ze toegang hebben tot dezelfde gegevens of gegevensbestanden.
Hoe het werkt
In Microsoft Fabric (Runtime 1.1 en 1.2) is intelligente caching standaard ingeschakeld voor alle Spark-pools voor alle werkruimten met cachegrootte met 50%. De werkelijke grootte van de beschikbare opslag en de cachegrootte op elk knooppunt is afhankelijk van de familie van het knooppunt en de grootte van het knooppunt.
Wanneer intelligente cache gebruiken
Deze functie profiteert van het volgende:
Voor uw workload moet hetzelfde bestand meerdere keren worden gelezen en de bestandsgrootte past in de cache.
Uw workload maakt gebruik van Delta Lake-tabellen, Parquet- of CSV-bestandsindelingen.
U ziet het voordeel van intelligente cache niet als:
U leest een bestand dat de cachegrootte overschrijdt. Zo ja, dan kan het begin van de bestanden worden verwijderd en moeten de volgende query's de gegevens uit de externe opslag verleggen. In dit geval ziet u geen voordelen van de intelligente cache en wilt u mogelijk de grootte van uw cache en/of knooppunt 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.
De intelligente cache in- en uitschakelen
U kunt de intelligente cache in een sessie uitschakelen of inschakelen door de volgende code uit te voeren in uw notebook of door deze configuratie in te stellen op werkruimte- of omgevingsitemniveau .
spark.conf.set("spark.synapse.vegas.useCache", "false/true")