Intelligent cache i Microsoft Fabric
Den intelligenta cachefunktionen fungerar sömlöst i bakgrunden och cachelagrar data för att påskynda körningen av Apache Spark-jobb i Microsoft Fabric när den läse från din OneLake- eller Azure Data Lake Storage-gen2-lagring (ADLS) Gen2 via genvägar. Den identifierar också automatiskt ändringar i de underliggande filerna och uppdaterar automatiskt filerna i cacheminnet, vilket ger dig de senaste data. När cachestorleken når sin gräns släpper cachen automatiskt ut minst lästa data för att ge utrymme för nyare data. Den här funktionen sänker den totala ägandekostnaden genom att förbättra prestandan med upp till 60 % på efterföljande läsningar av filerna som lagras i den tillgängliga cachen.
När Apache Spark-motorn i Microsoft Fabric frågar en fil eller tabell från lakehouse anropar den fjärrlagringen för att läsa de underliggande filerna. För varje frågebegäran om att läsa samma data måste Spark-motorn göra ett anrop till fjärrlagring varje gång. Den här redundanta processen lägger till svarstid till din totala bearbetningstid. Spark har ett cachelagringskrav som du måste ange manuellt och släppa cacheminnet för att minimera svarstiden och förbättra den övergripande prestandan. Detta krav kan dock resultera i inaktuella data om underliggande data ändras.
Intelligent cache förenklar processen genom att automatiskt cachelagra varje läsning i det allokerade cachelagringsutrymmet på varje Spark-nod där datafiler cachelagras i SSD. Varje begäran om en fil kontrollerar om filen finns i den lokala nodcachen och jämför taggen från fjärrlagringen för att avgöra om filen är inaktuell. Om filen inte finns eller om filen är inaktuell läser Spark filen och lagrar den i cacheminnet. När cacheminnet blir fullt avlägsnas filen med den äldsta senaste åtkomsttiden från cachen för att tillåta nyare filer.
Intelligent cache är en enda cache per nod. Om du använder en medelstor nod och kör med två små utförare på den enda noden delar de två körarna samma cache. Cachelagring på datafilnivå gör det också möjligt för flera frågor att använda samma cache om de har åtkomst till samma data eller datafiler.
Så här fungerar det
I Microsoft Fabric (Runtime 1.1 och 1.2) aktiveras intelligent cachelagring som standard för alla Spark-pooler för alla arbetsytor med cachestorlek med 50 %. Den faktiska storleken på den tillgängliga lagringen och cachestorleken på varje nod beror på nodfamiljen och nodstorleken.
När du ska använda intelligent cache
Den här funktionen gynnar dig om:
Din arbetsbelastning kräver att du läser samma fil flera gånger och filstorleken passar i cacheminnet.
Din arbetsbelastning använder Delta Lake-tabeller, Parquet- eller CSV-filformat.
Du ser inte fördelarna med intelligent cache om:
Du läser en fil som överskrider cachestorleken. I så fall kan början av filerna tas bort och efterföljande frågor måste hämta data från fjärrlagringen. I det här fallet ser du inga fördelar med den intelligenta cachen, och du kanske vill öka cachestorleken och/eller nodstorleken.
Din arbetsbelastning kräver stora mängder shuffle. Om du inaktiverar den intelligenta cachen frigörs ledigt utrymme för att förhindra att jobbet misslyckas på grund av otillräckligt lagringsutrymme.
Aktivera och inaktivera intelligent cache
Du kan inaktivera eller aktivera den intelligenta cachen i en session genom att köra följande kod i notebook-filen eller ange den här konfigurationen på arbetsytans eller miljöobjektnivån .
spark.conf.set("spark.synapse.vegas.useCache", "false/true")