Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Delta Lake MERGE-kommandoen giver brugerne mulighed for at opdatere en Delta-tabel med avancerede betingelser. Det kan opdatere data fra en kildetabel, visning eller DataFrame til en destinationstabel ved hjælp MERGE af en kommando. Den aktuelle algoritme er dog ikke fuldt optimeret til håndtering af uændrede rækker. Med optimeringen af lav shufflefletning udelukkes ikke-modificerede rækker fra en dyr blandingshandling, der er nødvendig for at opdatere matchende rækker.
Bemærkning
Lav shufflefletning er tilgængelig og aktiveret som standard i alle Fabric Spark-kørsel for at forbedre ydeevnen af handlingerne MERGE markant.
Derfor har vi brug for lav shufflefletning
Handlingen udføres i øjeblikket MERGE af to joinudførelser. Den første joinforbindelse bruger hele måltabellen og kildedataene til at finde en liste over rørte filer i destinationstabellen, herunder eventuelle tilsvarende rækker. Derefter udfører den kun anden joinforbindelse ved læsning af de rørte filer og kildedata for at foretage den faktiske tabelopdatering. Selvom den første joinforbindelse er at reducere mængden af data for den anden joinforbindelse, kan der stadig være et stort antal uændrede rækker i rørte filer. Den første joinforespørgsel er lysere, da den kun læser kolonner i den angivne matchende betingelse. Den anden til tabelopdatering skal indlæse alle kolonner, hvilket medfører en dyr blandingsproces.
Med optimering af lav shufflefletning bevarer Delta det matchende rækkeresultat fra den første joinforbindelse midlertidigt og bruger det til den anden joinforbindelse. På baggrund af resultatet udelades ikke-modificerede rækker fra den tunge blandingsproces. Der ville være to separate skrivejob for matchende rækker og uændrede rækker, så det kan resultere i 2x antal outputfiler sammenlignet med den forrige funktionsmåde. Den forventede ydeevneforøgelse opvejer dog det mulige problem med små filer.
Fordele ved lav shufflefletning
- Uændrede rækker i rørte filer håndteres separat og gennemgår ikke den faktiske MERGE-handling. Det kan gemme den samlede udførelsestid for MERGE og beregningsressourcer. Gevinsten vil være større, når mange rækker kopieres, og kun nogle få rækker opdateres.
- Rækkerækkefølger bevares for uændrede rækker. Outputfilerne for uændrede rækker kan derfor stadig være effektive til data, der springes over, hvis filen er sorteret eller Z-ORDERED.
- Der ville være små omkostninger, selv i værste fald, når MERGE-betingelsen matcher alle rækker i rørte filer.
Sådan aktiverer og deaktiverer du lav shufflefletning
Lav shufflefletning er som standard aktiveret som en Spark-sessionkonfiguration: