Intelligent hurtigbuffer i Microsoft Fabric
Den intelligente hurtigbufferfunksjonen fungerer sømløst bak kulissene og bufrer data for å bidra til å øke hastigheten på kjøringen av Apache Spark-jobber i Microsoft Fabric mens den leses fra OneLake- eller Azure Data Lake Storage (ADLS) Gen2-lagring via snarveier. Den oppdager også automatisk endringer i de underliggende filene og oppdaterer filene automatisk i hurtigbufferen, noe som gir deg de nyeste dataene. Når hurtigbufferstørrelsen når grensen, frigir hurtigbufferen automatisk de minst leste dataene for å gi plass til nyere data. Denne funksjonen reduserer den totale eierkostnaden ved å forbedre ytelsen opptil 60 % ved påfølgende lesing av filene som er lagret i den tilgjengelige hurtigbufferen.
Når Apache Spark-motoren i Microsoft Fabric spør etter en fil eller tabell fra lakehouse, ringer den til den eksterne lagringsplassen for å lese de underliggende filene. Med hver spørringsforespørsel om å lese de samme dataene, må Spark-motoren foreta et kall til ekstern lagring hver gang. Denne overflødige prosessen gir ventetiden til den totale behandlingstiden. Spark har et hurtigbufringskrav som du må angi manuelt og frigi hurtigbufferen for å minimere ventetiden og forbedre den generelle ytelsen. Dette kravet kan imidlertid resultere i foreldede data hvis de underliggende dataene endres.
Intelligent hurtigbuffer forenkler prosessen ved automatisk å bufre hver lese i den tildelte lagringsplassen for hurtigbufferen på hver Spark-node der datafiler bufres i SSD. Hver forespørsel om en fil kontrollerer om filen finnes i den lokale nodebufferen og sammenligner koden fra den eksterne lagringsplassen for å finne ut om filen er foreldet. Hvis filen ikke finnes, eller hvis filen er foreldet, leser Spark filen og lagrer den i hurtigbufferen. Når hurtigbufferen blir full, blir filen med den eldste siste tilgangstiden kastet ut fra hurtigbufferen for å tillate nyere filer.
Intelligent hurtigbuffer er én enkelt hurtigbuffer per node. Hvis du bruker en mellomstor node og kjører med to små eksekutorer på den ene noden, deler de to eksekutorene samme hurtigbuffer. Hurtigbufring på datafilnivå gjør det også mulig for flere spørringer å bruke samme hurtigbuffer hvis de får tilgang til de samme dataene eller datafilene.
Hvordan det fungerer
I Microsoft Fabric (Runtime 1.1 og 1.2) aktiveres intelligent hurtigbufring som standard for alle Spark-bassengene for alle arbeidsområder med hurtigbufferstørrelse med 50 %. Den faktiske størrelsen på den tilgjengelige lagringsplassen og hurtigbufferstørrelsen på hver node avhenger av nodefamilien og nodestørrelsen.
Når du skal bruke intelligent hurtigbuffer
Denne funksjonen fordeler deg hvis:
Arbeidsbelastningen krever at du leser den samme filen flere ganger, og filstørrelsen passer i hurtigbufferen.
Arbeidsbelastningen bruker tabeller, parquet- eller CSV-filformater for Delta Lake.
Du ser ikke fordelen med intelligent hurtigbuffer hvis:
Du leser en fil som overskrider hurtigbufferstørrelsen. I så fall kan begynnelsen av filene bli kastet ut, og etterfølgende spørringer må oppdatere dataene fra den eksterne lagringsplassen. I dette tilfellet ser du ingen fordeler fra den intelligente hurtigbufferen, og du vil kanskje øke størrelsen på hurtigbufferen og/eller nodestørrelsen.
Arbeidsbelastningen krever store mengder tilfeldig rekkefølge. Deaktivering av den intelligente hurtigbufferen frigjør tilgjengelig plass for å hindre at jobben mislykkes på grunn av utilstrekkelig lagringsplass.
Aktivere og deaktivere den intelligente hurtigbufferen
Du kan deaktivere eller aktivere den intelligente hurtigbufferen i en økt ved å kjøre følgende kode i notatblokken eller angi denne konfigurasjonen på arbeidsområde- eller miljøelementnivå .
spark.conf.set("spark.synapse.vegas.useCache", "false/true")