Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bestanden met de juiste grootte zijn belangrijk voor queryprestaties, resourcegebruik en metagegevensbeheer. Kleinere bestanden verhogen de overhead van taken en metagegevensbewerkingen, terwijl grotere bestanden parallelle uitvoering en scheefheid I/O kunnen onderbenuten. Delta Lake maakt gebruik van bestandsmetagegevens voor partitie inkorting en het overslaan van data, dus het afstemmen op de juiste bestandsgrootte zorgt voor efficiënter lezen, schrijven en onderhoud.
In de volgende sectie ziet u hoe u verschillende functies voor het afstemmen van de bestandsgrootte kunt gebruiken om prestaties voor uw Delta-tabellen te bereiken.
Bewerkingen voor aanpasbare gegevensorganisatie
Optimize
Met de OPTIMIZE opdracht worden kleine bestanden herschreven als grotere bestanden om de indeling van gegevens in Delta-tabellen te verbeteren. Raadpleeg de documentatie voor de OPTIMIZE-opdracht voor meer informatie over het afstemmen van de bestandsgrootte.
Automatische compressie
Automatisch comprimeren evalueert automatisch de partitiestatus na elke schrijfbewerking. Wanneer overmatige bestandsfragmentatie (te veel kleine bestanden) binnen een partitie wordt gedetecteerd, wordt er een synchrone OPTIMIZE bewerking geactiveerd direct nadat de schrijfbewerking is doorgevoerd. Deze schrijvergestuurde benadering van bestandsonderhoud is over het algemeen optimaal omdat compressie alleen wordt uitgevoerd wanneer programmatisch wordt bepaald dat het nuttig is. Zie de documentatie voor automatische compressie voor gedetailleerde configuratieopties en aanvullende informatie.
Schrijfbewerking optimaliseren
Schrijfbewerkingen optimaliseren vermindert de overhead van kleine bestanden door pre-write comprimering (bin-verpakking) uit te voeren, waardoor er minder grotere bestanden worden gegenereerd. Met deze methode worden gegevens in het geheugen in een optimale grootte geplaatst voordat Spark de Parquet-bestanden schrijft, waardoor het potentieel voor het genereren van bestanden met de juiste grootte wordt gemaximaliseerd zonder onmiddellijke opschoonbewerkingen na schrijven.
Schrijfbewerkingen optimaliseren moet voorzichtig worden gebruikt omdat de rekenkosten van het opsnipperen van gegevens overmatige en onnodige verwerkingstijd kunnen toevoegen aan specifieke schrijfscenario's. Het optimaliseren van schrijfbewerkingen is nuttig wanneer een schrijfbewerking anders kleine bestanden zou produceren die later geschikt zouden zijn voor compressie.
Schrijfbewerking optimaliseren is meestal nuttig voor:
- Gepartitioneerde tabellen
- Tabellen met veelgebruikte kleine invoegingen
- Bewerkingen die waarschijnlijk veel bestanden aanraken (
MERGE,UPDATEenDELETE)
Voor selectieve toepassing op specifieke tabellen moet u de sessieconfiguratie ongedaan maken en de tabeleigenschap afzonderlijk inschakelen. Door de configuratie op sessieniveau ongedaan te maken, kunnen Spark-sessies afhankelijk zijn van elke tabel om te bepalen of 'optimize write' moet worden toegepast.
Optimalisatie voor schrijfbewerkingen uitschakelen
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")Inschakelen voor afzonderlijke tabel
ALTER TABLE dbo.table_name SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
Als u schrijfbewerkingen naar alle gepartitioneerde tabellen in de Spark-sessie wilt inschakelen, controleert u of de sessieconfiguratie ongedaan is en schakelt u vervolgens de sessieconfiguratie spark.microsoft.delta.optimizeWrite.partitioned.enabledin:
De doelbestandsgrootte die is gegenereerd op basis van het optimaliseren van schrijfbewerkingen, kan worden aangepast via de spark.databricks.delta.optimizeWrite.binSize configuratie.
Opmerking
Zie resourceprofielen voor de standaardinstellingen voor het optimaliseren van schrijfbewerkingen per resourceprofiel.
Doelbestandsgrootte consistent instellen
Om te voorkomen dat u een sessieconfiguratie met minimale en maximale doelbestandsgrootte moet instellen voor het optimaliseren, automatisch comprimeren en optimaliseren van schrijfbewerkingen, biedt Microsoft Fabric de delta.targetFileSize tabeleigenschap als een middel om alle gerelateerde configuraties voor gegevensindelingen op tabelniveau samen te stellen. De waarde voor de grootte van het doelbestand wordt ingevoerd als een bytetekenreeks (bijvoorbeeld 1073741824b, 1048576k1024m, , ). 1g Wanneer dit is opgegeven, heeft deze voorrang op alle andere sessieconfiguraties en adaptieve doelbestandsgrootte.
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')
Adaptieve doelbestandsgrootte
Microsoft Fabric biedt een adaptieve doelbestandsgrootte om de complexiteit met betrekking tot het handmatig afstemmen van de doelbestandsgrootte van alle tabellen in een sessie of afzonderlijke tabellen via de delta.targetFileSize tabeleigenschap te elimineren. Adaptieve doelbestandsgrootte maakt gebruik van deltatabel-heuristieken zoals tabelgrootte om de ideale doelbestandsgrootte te schatten en het doel automatisch bij te werken wanneer de omstandigheden veranderen, waardoor optimale prestaties worden gegarandeerd zonder handmatige tussenkomst of onderhoudsoverhead.
Opmerking
Hoewel deze optie momenteel niet standaard is ingeschakeld, raadt Microsoft aan om de sessieconfiguratie van de adaptieve doelbestandsgrootte in te schakelen.
Schakel adaptieve doelbestandsgrootte in voor tabellen die zijn gemaakt of gewijzigd in een Spark-sessie door de volgende Spark-sessieconfiguratie in te stellen:
Wanneer deze optie is ingeschakeld, wordt de grootte van het adaptieve doelbestand geëvalueerd en ingesteld in de volgende scenario's:
-
CREATE TABLE AS SELECTenCREATE OR REPLACE TABLE AS SELECTbewerkingen - Schrijfbewerkingen overschrijven (bijvoorbeeld
DataFrame.write.mode("overwrite")ofINSERT OVERWRITE) - Schrijft in
ErrorIfExists,Append, ofIgnoremodus bij het maken van een nieuwe tabel - Aan het begin van de
OPTIMIZEopdracht
Eenmaal ingesteld, blijft de ideale grootte opnieuw evalueren aan het begin van elke OPTIMIZE bewerking om ervoor te zorgen dat de huidige heuristiek de meest recente gegevensdistributie en tabelgroei weergeeft. Met deze adaptieve benadering wordt de grootte van het doelbestand in de loop van de tijd automatisch bijgewerkt, waardoor de noodzaak voor handmatig afstemmen wordt verwijderd, terwijl query- en schrijfprestaties behouden blijven naarmate uw gegevens toenemen. Wanneer u een specifieke grootte wilt vergrendelen, zoals in gebruiksvoorbeelden voor hyperafstemming of testen, kunt u de adaptieve instelling overschrijven door expliciet de door de gebruiker gedefinieerde delta.targetFileSize tabeleigenschap in te stellen.
De waarde voor de geëvalueerde adaptieve doelbestandsgrootte kan worden gecontroleerd door DESCRIBE DETAIL of DESCRIBE EXTENDED op de tabel uit te voeren. De adaptieve geëvalueerde grootte wordt opgeslagen als een bytetekenreeks in de tabeleigenschap delta.targetFileSize.adaptive. Deze waarde wordt gebruikt als de configuratie van de maximale of doelgrootte voor het optimaliseren, automatisch comprimeren en optimaliseren van schrijfbewerkingen. De minimumwaarde die wordt gebruikt door gerelateerde configuraties, wordt berekend als de helft van delta.targetFileSize.adaptive.
Adaptieve doelbestandsgrootte kan verder worden geconfigureerd via de volgende Spark-sessieconfiguraties:
| Vastgoed | Description | Standaardwaarde | Sessieconfiguratie |
|---|---|---|---|
| minFileSize | Hiermee geeft u de minimale bestandsgrootte (ondergrens) op als een bytetekenreeks die adaptieve doelbestandsgrootte gebruikt wanneer deze wordt geëvalueerd. Moet tussen 128 MB en 1 GB zijn. | 128m | spark.microsoft.delta.targetFileSize.adaptive.minFileSize |
| maxFileSize | Hiermee geeft u de maximale bestandsgrootte (bovengrens) op als een bytetekenreeks die adaptieve doelbestandsgrootte gebruikt wanneer deze wordt geëvalueerd. Moet tussen 128 MB en 1 GB zijn. | 1024m | spark.microsoft.delta.targetFileSize.adaptive.maxFileSize |
| stopAtMaxSize | Wanneer true, wordt verdere grootte-evaluaties gestopt zodra de berekende doelbestandsgrootte de maxFileSize bereikt, waardoor eventuele evaluatie-overhead voor zeer grote tabellen wordt verminderd. |
true | spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize |
Opmerking
Met stopAtMaxSize ingeschakeld (de standaardinstelling) blijft de adaptieve doelgrootte vast op de maximumwaarde zodra deze is bereikt, waardoor extra berekeningen worden vermeden. Als uw tabellen na het groeien kunnen krimpen, stelt u deze eigenschap in op false, zodat herberekening onder de maximale drempel mogelijk is.
In de volgende grafiek ziet u de relatie tussen de tabelgrootte en de optimale parquet-bestandsgrootte. Voor tabellen onder 10 GB evalueert de Fabric Spark Runtime de grootte van het doelbestand tot 128 MB. Naarmate de tabel groter wordt, wordt de grootte van het doelbestand lineair geschaald, waardoor het maximaal 1 GB bereikt voor tabellen die groter zijn dan 10 TB.
Beginnend klein bij 128 MB en vervolgens het schalen van de grootte van Parquet-bestanden naarmate een tabel groter wordt, heeft trapsgewijze voordelen:
Verbeterde overslaan van Delta-bestanden: bestanden met de juiste grootte ondersteunen optimale clustering en overslaan, waardoor het protocol voor het overslaan van bestanden van Delta meer irrelevante bestanden tijdens het uitvoeren van query's kan elimineren. Een kleine tabel met 128 MB bestanden in plaats van 1 GB bestanden maakt het overslaan van bestanden 8x mogelijk.
Lagere updatekosten:
MERGEenUPDATEbewerkingen herschrijven alleen betrokken bestanden. Bestanden met de juiste grootte minimaliseren het aantal bestanden dat per bewerking wordt aangeraakt, waardoor de hoeveelheid herschreven gegevens wordt verminderd. Als verwijderingsvectoren zijn ingeschakeld, wordt de juiste bestandsgrootte kritiek: tombstones op rijniveau in te grote bestanden leiden tot aanzienlijke opschoonkosten tijdens compactie- of verwijderingsbewerkingen.Geoptimaliseerd parallellisme: bestanden met de juiste grootte maken spark mogelijk om ideale taakparallellisme te bereiken. Te veel kleine bestanden overweldigen de planner; te weinig grote bestanden maken gebruik van uw Spark-pool. Optimale grootte maximaliseert zowel lees- als schrijfdoorvoer.
Adaptieve doelbestandsgrootte kan de compressieprestaties met 30-60% verbeteren en snellere query's en schrijfbewerkingen leveren wanneer deze een optimale bestandsgrootte selecteert dan de standaardgrootte. Als de adaptieve evaluatie dezelfde grootte oplevert als de standaardconfiguratie van spark-sessies, is er geen verwachte prestatieverbetering.
Belangrijk
Om schrijfversterking te voorkomen, waarbij al gecomprimeerde bestanden worden herschreven wanneer de bestandsgrootte van het adaptieve doel toeneemt naarmate uw tabel groeit, schakelt u compressiedoelen op bestandsniveau in. Deze functie voorkomt dat bestanden die worden gecomprimeerd onder eerdere adaptieve doelgrootten onnodig opnieuw worden gecomprimeerd. Zie de documentatie over compressiedoelen op bestandsniveau voor meer informatie.
Samenvatting van aanbevolen procedures
-
Schakel automatische compressie in voor opnamepijplijnen met frequente kleine schrijfbewerkingen (streaming of microbatch) om handmatige planning te voorkomen en bestanden automatisch te comprimeren.
- Voor andere schrijfpatronen kan het nuttig zijn om in te schakelen als verzekering tegen het accumuleren van kleine bestanden, maar afwegen of uw serviceniveaudoelstellingen voor gegevensverwerking periodieke pieken in de verwerkingstijd tolereren.
- Schakel adaptieve doelbestandsgrootte in om het schattingswerk rond optimale doelbestandsgrootten te verwijderen.
- Gebruik Optimize Write in gecontroleerde invoerpaden (batchtaken die herordening, partitioneringsscenario's of frequente kleine schrijfbewerkingen kunnen tolereren) om het maken van kleine bestanden en downstream onderhoudskosten te verminderen. Pre-write compactie (schrijf optimaliseren) is meestal goedkoper dan post-write compactie (optimaliseren).
- Plan bewerkingen in volledige tabellen
OPTIMIZEtijdens stille vensters wanneer u veel partities moet herschrijven of Z-Order moet uitvoeren. - Schakel snel optimaliseren in om schrijfversterking te minimaliseren en meer idempotent te maken
OPTIMIZE(zie snel optimaliseren). - Gebruik
delta.targetFileSizeof bij voorkeur adaptieve doelbestandsgrootte om waarden voor de doelbestandsgrootte consistent te houden in functies voor gegevensindelingen en Spark-sessies. - Schakel compressiedoelen op bestandsniveau in om schrijfversterking te voorkomen wanneer tabellen groter worden en grotere doelbestandsgrootten gebruiken.
Verwante inhoud
- Tabelcompressie
- Wat is Delta Lake?