Freigeben über


Intelligenter Cache in Microsoft Fabric

Das intelligente Cachefeature arbeitet nahtlos im Hintergrund und speichert Daten zwischen, um die Ausführung von Apache Spark-Aufträgen in Microsoft Fabric zu beschleunigen, wenn Daten über Verknüpfungen aus Ihrem OneLake- oder ADLS Gen2-Speicher (Azure Data Lake Storage) gelesen werden. Außerdem erkennt das Feature automatisch Änderungen an den zugrunde liegenden Dateien und aktualisiert die Dateien im Cache, um die neuesten Daten bereitzustellen. Wenn die maximale Cachegröße erreicht ist, gibt der Cache automatisch die am seltensten gelesenen Daten frei, um Platz für neuere Daten zu schaffen. Dieses Feature verringert die Gesamtbetriebskosten, da sich die Leistung bei aufeinanderfolgenden Lesevorgängen der im verfügbaren Cache gespeicherten Dateien um bis zu 60 Prozent verbessert.

Wenn die Apache Spark-Engine in Microsoft Fabric eine Datei oder Tabelle aus Ihrem Lakehouse abfragt, sendet sie einen Aufruf an den Remotespeicher, um die zugrunde liegenden Dateien zu lesen. Bei jeder Abfrageanforderung zum Lesen der gleichen Daten muss die Spark-Engine einen Aufruf an den Remotespeicher senden. Durch diesen redundanten Prozess verlängert sich die Gesamtverarbeitungszeit um weitere Wartezeit. Bei Spark gibt es im Zusammenhang mit der Zwischenspeicherung die Anforderung, dass Sie den Cache manuell festlegen und freigeben müssen, um die Wartezeit zu minimieren und die Gesamtleistung zu verbessern. Diese Anforderung kann jedoch zu veralteten Daten führen, wenn sich die zugrunde liegenden Daten ändern.

Der intelligente Cache vereinfacht den Prozess durch automatisches Zwischenspeichern der einzelnen Lesevorgänge im zugewiesenen Cachespeicherbereich für den jeweiligen Spark-Knoten, auf dem Datendateien auf einem SSD-Datenträger zwischengespeichert werden. Bei jeder Anforderung einer Datei wird geprüft, ob die Datei im Cache des lokalen Knotens vorhanden ist. Außerdem wird das Tag aus dem Remotespeicher verglichen, um festzustellen, ob die Datei veraltet ist. Wenn die Datei veraltet oder nicht vorhanden ist, liest Spark die Datei und speichert sie im Cache. Wenn der Cache voll wird, wird die Datei mit der ältesten letzten Zugriffszeit aus dem Cache entfernt, um Platz für aktuellere Dateien zu schaffen.

Der intelligente Cache ist ein einzelner Cache pro Knoten. Wenn Sie einen mittelgroßen Knoten verwenden und auf diesem einzelnen Knoten zwei kleine Executors betreiben, teilen sich die beiden Executors den gleichen Cache. Diese Zwischenspeicherung auf Datendateiebene ermöglicht es außerdem, dass mehrere Abfragen den gleichen Cache verwenden, wenn sie auf die gleichen Daten oder Datendateien zugreifen.

Funktionsweise

In Microsoft Fabric (Runtime 1.1 und 1.2) ist die intelligente Zwischenspeicherung standardmäßig für alle Spark-Pools für alle Arbeitsbereiche mit einer Cachegröße von 50 Prozent aktiviert. Die tatsächliche Größe des verfügbaren Speichers und die Cachegröße auf den einzelnen Knoten hängen von der Knotenfamilie und von der Knotengröße ab.

Verwendung des intelligenten Cache

Dieses Feature ist für Sie von Vorteil, wenn Folgendes zutrifft:

  • Ihre Workload erfordert das mehrmalige Lesen der gleichen Datei, und die Dateigröße passt in den Cache.

  • Ihre Workload verwendet Delta Lake-Tabellen, das Parquet-Dateiformat oder das CSV-Dateiformat.

In folgenden Fällen hat der intelligente Cache keine Vorteile:

  • Sie lesen eine Datei, die größer ist als der Cache. In diesem Fall wird ggf. der Anfang der Datei entfernt, und bei nachfolgenden Abfragen müssen die Daten erneut aus dem Remotespeicher abgerufen werden. In diesem Fall bietet der intelligente Cache keine Vorteile, und es empfiehlt sich gegebenenfalls, die Cachegröße und/oder die Knotengröße heraufzusetzen.

  • Ihre Workload erfordert Umlagerung von Daten im großen Stil. Durch Deaktivieren des intelligenten Cache wird Speicherplatz freigegeben, um zu vermeiden, dass Ihr Auftrag aufgrund von unzureichendem Speicherplatz nicht erfolgreich ist.

Aktivieren und Deaktivieren des intelligenten Cache

Sie können den intelligenten Cache innerhalb einer Sitzung deaktivieren oder aktivieren, indem Sie den folgenden Code in Ihrem Notebook ausführen oder diese Konfiguration auf Arbeitsbereichs- oder Umgebungselementebene festlegen.

spark.conf.set("spark.synapse.vegas.useCache", "false/true")