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.
Filer af passende størrelse er vigtige for forespørgselsydeevne, ressourceudnyttelse og metadatastyring. Mindre filer øger opgaveomkostninger og metadataoperationer, mens større filer kan underudnytte parallelitet og skævvride I/O. Delta Lake bruger filmetadata til partitionsbeskæring og dataspring, så målretning af den rigtige filstørrelse sikrer effektiv læsning, skrivning og vedligeholdelse.
I det følgende afsnit kan du se, hvordan du kan bruge forskellige justeringsfunktioner til filstørrelse til at opnå ydeevne for dine Delta-tabeller.
Handlinger til justerbart datalayout
Optimer
Kommandoen OPTIMIZE omskriver små filer til større filer for at forbedre layoutet af data i Delta-tabeller. Du kan finde flere oplysninger, herunder oplysninger om justering af filstørrelse, i dokumentationen til kommandoen OPTIMIZE .
Automatisk komprimering
Automatisk komprimering evaluerer automatisk partitionens tilstand efter hver skrivehandling. Når den registrerer overdreven filfragmentering (for mange små filer) i en partition, udløser den en synkron OPTIMIZE handling umiddelbart efter, at skrivningen er begået. Denne forfatterdrevne tilgang til filvedligeholdelse er generelt optimal, fordi komprimering kun udføres, når det er programmatisk bestemt at være gavnligt. Du kan finde detaljerede konfigurationsindstillinger og yderligere oplysninger i dokumentationen til automatisk komprimering .
Optimer skrivning
Optimer skrivning reducerer omkostningerne ved små filer ved at udføre komprimering før skrivning (bin packing), som genererer færre, større filer. Denne fremgangsmåde blander data i hukommelsen til beholdere i optimal størrelse, før Spark skriver Parquet-filerne, hvilket maksimerer potentialet for at generere filer i passende størrelse uden at kræve øjeblikkelige oprydningshandlinger efter skrivning.
Optimer skrivning bør bruges med forsigtighed, da beregningsomkostningerne ved at blande data kan tilføje overdreven og unødvendig behandlingstid til specifikke skrivescenarier. Optimering af skrivning er en fordel, når en skriveoperation ellers ville producere små filer, der ville være kandidater til komprimering senere.
Optimer skrivning er almindeligvis gavnligt for:
- Partitionerede tabeller
- Borde med hyppige små indsatser
- Handlinger, der sandsynligvis vil berøre mange filer (
MERGE,UPDATE, ogDELETE)
Hvis du vil anvende selektivt på bestemte tabeller, skal du fjerne sessionskonfigurationen og aktivere tabelegenskaben individuelt. Hvis du fjerner indstillingen af konfigurationen på sessionsniveau, kan Spark-sessioner udskydes til hver tabel med hensyn til, om optimering af skrivning skal anvendes.
Fjern optimer skrivning
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")Aktivér på individuel tabel
ALTER TABLE dbo.table_name SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
Hvis du vil aktivere on-skrivninger til alle partitionerede tabeller i Spark-sessionen, skal du sikre dig, at sessionskonfigurationen er frakoblet, og derefter aktivere sessionskonfigurationen spark.microsoft.delta.optimizeWrite.partitioned.enabled:
Målfilstørrelsen genereret fra optimering af skrivning kan justeres via konfigurationen spark.databricks.delta.optimizeWrite.binSize .
Notat
Se ressourceprofiler for standardindstillinger for optimering af skrivning efter ressourceprofil.
Konsekvent indstilling af målfilstørrelse
For at undgå at skulle angive sessionskonfiguration af minimum- og målfilstørrelse for optimering, automatisk komprimering og optimering af skrivning leverer delta.targetFileSize Microsoft Fabric tabelegenskaben som et middel til at forene alle relaterede datalayoutkonfigurationer på tabelniveau. Værdien for målfilstørrelsen indtastes som en bytestreng (f.eks. 1073741824b, 1048576k, 1024m, ). 1g Når den er angivet, har den forrang over alle andre sessionskonfigurationer og den adaptive målfilstørrelse.
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')
Adaptiv målfilstørrelse
Microsoft Fabric indeholder en adaptiv målfilstørrelse for at eliminere kompleksiteten i forbindelse med manuel justering af målfilstørrelsen for alle tabeller i en session eller individuelle tabeller via tabelegenskaben delta.targetFileSize . Adaptiv målfilstørrelse bruger Delta-tabelheuristik som tabelstørrelse til at estimere den ideelle målfilstørrelse og opdaterer automatisk målet, når forholdene ændres, hvilket sikrer optimal ydeevne uden manuel indgriben eller vedligeholdelsesomkostninger.
Notat
Selvom det ikke er aktiveret som standard i øjeblikket, anbefaler Microsoft, at du aktiverer sessionskonfigurationen af den adaptive destinationsfilstørrelse .
Aktivér tilpasset destinationsfilstørrelse på tabeller, der er oprettet eller ændret i en Spark-session, ved at angive følgende Spark-sessionskonfiguration:
Når den er aktiveret, evalueres og angives den adaptive destinationsfilstørrelse i følgende scenarier:
-
CREATE TABLE AS SELECTogCREATE OR REPLACE TABLE AS SELECTdrift - Overskriv skrivninger (f.eks.
DataFrame.write.mode("overwrite")ellerINSERT OVERWRITE) - Skriver i
ErrorIfExists,AppendellerIgnoretilstand, når du opretter en ny tabel - I starten af kommandoen
OPTIMIZE
Når den ideelle størrelse er indstillet, fortsætter den med at reevaluere i starten af hver OPTIMIZE handling for at sikre, at den aktuelle heuristik afspejler den seneste datadistribution og tabelvækst. Denne adaptive fremgangsmåde opdaterer automatisk destinationsfilstørrelsen over tid, hvilket fjerner behovet for manuel justering, samtidig med at forespørgsels- og skriveydeevnen bevares, efterhånden som dine data vokser. Når du har brug for at låse en bestemt størrelse, f.eks. i hyperjustering eller test af brugssager, kan du tilsidesætte den adaptive indstilling ved eksplicit at angive den brugerdefinerede delta.targetFileSize tabelegenskab.
Den evaluerede værdi for adaptiv målfilstørrelse kan overvåges ved at køre DESCRIBE DETAIL eller DESCRIBE EXTENDED på tabellen. Den adaptive evaluerede størrelse gemmes som en bytestreng i tabelegenskaben delta.targetFileSize.adaptive. Denne værdi bruges som konfiguration af maks. størrelse eller målstørrelse for optimering, automatisk komprimering og optimering af skrivning. Den minimumsværdi, der bruges af relaterede konfigurationer, beregnes som halvdelen af delta.targetFileSize.adaptive.
Adaptiv destinationsfilstørrelse kan konfigureres yderligere via følgende Spark-sessionskonfigurationer:
| Egenskab | Beskrivelse | Standardværdi | Konfiguration af session |
|---|---|---|---|
| minFileSize | Angiver den mindste filstørrelse (nedre grænse) som en bytestreng, som Adaptiv destinationsfilstørrelse bruger, når den evalueres. Skal være mellem 128 MB og 1 GB. | 128 m | spark.microsoft.delta.targetFileSize.adaptive.minFileSize |
| maxFileSize | Angiver den maksimale filstørrelse (øvre grænse) som en bytestreng, som Adaptiv destinationsfilstørrelse bruger, når den evalueres. Skal være mellem 128 MB og 1 GB. | 1024m | spark.microsoft.delta.targetFileSize.adaptive.maxFileSize |
| stopAtMaxSize | Når true, stopper yderligere størrelsesevalueringer, når den beregnede målfilstørrelse når , maxFileSizehvilket reducerer eventuelle evalueringsomkostninger på meget store tabeller. |
true | spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize |
Notat
Når stopAtMaxSize den er aktiveret (standard), forbliver den adaptive målstørrelse fast på den maksimale værdi, når den er nået, så du undgår ekstra beregninger. Hvis dine tabeller kan blive mindre, når de er vokset, skal du angive denne egenskab til false for at tillade genberegning under maksimumgrænsen.
Følgende diagram illustrerer forholdet mellem tabelstørrelse og den optimale parketfilstørrelse. For tabeller under 10 GB evaluerer Fabric Spark Runtime destinationsfilstørrelsen til at være 128 MB. Efterhånden som tabelstørrelsen vokser, skaleres målfilstørrelsen lineært og når op til 1 GB for tabeller, der overstiger 10 TB.
At starte i det små med 128 MB og derefter skalere størrelsen på parketfiler, efterhånden som en tabel vokser i størrelse, har overlappende fordele:
Forbedret Delta-filspring: Filer i korrekt størrelse understøtter optimal dataklyngedannelse og spring, hvilket gør det muligt for Deltas filspringsprotokol at eliminere flere irrelevante filer under forespørgselsudførelse. En lille tabel med 128 MB filer i stedet for 1 GB filer muliggør 8 gange mere mulig filspring.
Reducerede opdateringsomkostninger:
MERGEogUPDATEoperationer omskriver kun berørte filer. Filer i den rigtige størrelse minimerer antallet af filer, der berøres pr. handling, hvilket reducerer mængden af data, der omskrives. Når Deletion Vectors er aktiveret, bliver korrekt filstørrelse afgørende: gravsten på rækkeniveau i overdimensionerede filer resulterer i betydelige oprydningsomkostninger under komprimering eller rensning.Optimeret parallelitet: Filer i den rigtige størrelse gør det muligt for Spark at opnå ideel opgaveparallelitet. For mange små filer overvælder planlæggeren; for få store filer underudnytter din Spark-pulje. Optimal dimensionering maksimerer både læse- og skrivegennemløb.
Adaptiv målfilstørrelse kan forbedre komprimeringsydelsen med 30-60% og levere hurtigere forespørgsler og skrivninger, når den vælger en mere optimal filstørrelse end standarden. Hvis den tilpassede evaluering giver samme størrelse som Spark-standardsessionskonfigurationen, er der ingen forventet forbedring af ydeevnen.
Vigtigt!
Hvis du vil undgå skriveforstærkning – hvor allerede komprimerede filer omskrives, når den adaptive målfilstørrelse øges, efterhånden som tabellen vokser – skal du aktivere komprimeringsmål på filniveau. Denne funktion forhindrer, at filer, der er komprimeret under tidligere adaptive målstørrelser, komprimeres unødigt. Du kan finde flere oplysninger i dokumentationen om komprimeringsmål på filniveau.
Oversigt over bedste praksis
-
Aktivér automatisk komprimering for indtagelsespipelines med hyppige små skrivninger (streaming eller mikrobatch) for at undgå manuel planlægning og for at holde filer komprimeret automatisk.
- For andre skrivemønstre kan det være en fordel at aktivere som forsikring mod akkumulering af små filer, men afvej, om dine mål for databehandlingsserviceniveau tolererer periodiske spidser i behandlingstiden.
- Aktivér adaptiv målfilstørrelse for at fjerne gætteriet omkring optimale destinationsfilstørrelser.
- Brug Optimer skrivning i kontrollerede indtagelsesstier (batchjob, der kan tolerere en blanding, partitioneringsscenarier eller hyppige små skrivninger) for at reducere oprettelsen af små filer og downstream-vedligeholdelsesomkostninger. Komprimering før skrivning (optimer skrivning) har en tendens til at være billigere end komprimering efter skrivning (optimering).
- Planlæg handlinger i fuld tabel
OPTIMIZEi stille vinduer , når du skal omskrive mange partitioner eller køre Z-Order. - Aktivér hurtig optimering for at minimere skriveforstærkning og gøre
OPTIMIZEmere idempotent (se hurtig optimering). - Brug
delta.targetFileSizeeller helst adaptiv målfilstørrelse for at holde målfilstørrelsesværdierne ensartede på tværs af datalayoutfunktioner og Spark-sessioner. - Aktivér komprimeringsmål på filniveau for at forhindre skriveforstærkning, efterhånden som tabeller vokser i størrelse og bruger større målfilstørrelser.