Del via


Intelligent cache i Microsoft Fabric

Den intelligente cachefunktion fungerer problemfrit bag kulisserne og cachelagrer data for at fremskynde udførelsen af Apache Spark-job i Microsoft Fabric, som den læses fra dit OneLake- eller ADLS Gen2-lager (Azure Data Lake Storage) via genveje. Den registrerer også automatisk ændringer af de underliggende filer og opdaterer automatisk filerne i cachen, hvilket giver dig de nyeste data. Når cachestørrelsen når grænsen, frigiver cachen automatisk de mindst læste data for at gøre plads til nyere data. Denne funktion sænker de samlede ejeromkostninger ved at forbedre ydeevnen op til 60 % ved efterfølgende læsninger af de filer, der er gemt i den tilgængelige cache.

Når Apache Spark-programmet i Microsoft Fabric forespørger en fil eller tabel fra dit lakehouse, foretager det et kald til fjernlageret for at læse de underliggende filer. Med hver forespørgselsanmodning om at læse de samme data skal Spark-programmet foretage et kald til fjernlageret hver gang. Denne redundante proces føjer ventetid til den samlede behandlingstid. Spark har et krav om cachelagring, som du manuelt skal angive og frigive cachen for at minimere ventetiden og forbedre den overordnede ydeevne. Dette krav kan dog resultere i forældede data, hvis de underliggende data ændres.

Intelligent cache forenkler processen ved automatisk at cachelagre hver læsning i den tildelte cachelagerplads på hver Spark-node, hvor datafiler cachelagres i SSD. Hver anmodning om en fil kontrollerer, om filen findes i den lokale nodecache, og sammenligner koden fra fjernlageret for at finde ud af, om filen er forældet. Hvis filen ikke findes, eller hvis filen er forældet, læser Spark filen og gemmer den i cachen. Når cachen bliver fuld, fjernes filen med det ældste tidspunkt for seneste adgang fra cachen for at tillade nyere filer.

Intelligent cache er en enkelt cache pr. node. Hvis du bruger en mellemstor node og kører med to små eksekveringsprogrammer på den enkelte node, deler de to eksekverere den samme cache. Cachelagring på datafilniveau gør det også muligt for flere forespørgsler at bruge den samme cache, hvis de har adgang til de samme data eller datafiler.

Sådan virker det

I Microsoft Fabric (Runtime 1.1 og 1.2) er intelligent cachelagring som standard aktiveret for alle Spark-puljer for alle arbejdsområder med cachestørrelse på 50 %. Den faktiske størrelse af det tilgængelige lager og cachestørrelsen på hver node afhænger af nodefamilien og nodestørrelsen.

Hvornår skal du bruge intelligent cache

Denne funktion er en fordel for dig, hvis:

  • Din arbejdsbelastning kræver læsning af den samme fil flere gange, og filstørrelsen passer i cachen.

  • Din arbejdsbelastning bruger Delta Lake-tabeller, parquet- eller CSV-filformater.

Du kan ikke se fordelen ved intelligent cache, hvis:

  • Du læser en fil, der overskrider cachestørrelsen. Hvis det er tilfældet, kan starten af filerne fjernes, og efterfølgende forespørgsler skal hente dataene tilbage fra fjernlageret. I dette tilfælde kan du ikke se nogen fordele ved den intelligente cache, og det kan være en god idé at øge cachestørrelsen og/eller nodestørrelsen.

  • Din arbejdsbelastning kræver store mængder shuffle. Deaktivering af den intelligente cache frigør ledig plads for at forhindre, at dit job mislykkes på grund af utilstrækkelig lagerplads.

Aktivér og deaktiver den intelligente cache

Du kan deaktivere eller aktivere den intelligente cache i en session ved at køre følgende kode i notesbogen eller angive denne konfiguration på elementniveau for arbejdsområdet eller miljøet .

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