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.
Opmerking
Aanbevelingen voor handmatig afstemmen zijn niet van toepassing op beheerde tabellen van Unity Catalog, die gebruikmaken van automatisch afstemmen van de bestandsgrootte. Gebruik beheerde tabellen in Unity Catalog met standaardinstellingen voor nieuwe tabellen.
In Databricks Runtime 13.3 LTS en hoger raadt Databricks aan om clustering te gebruiken voor tabelindeling. Zie Liquid Clustering gebruiken voor tabellen.
Databricks raadt aan om voorspellende optimalisatie te gebruiken om automatisch uit te voeren OPTIMIZE en VACUUM voor tabellen. Zie Voorspellende optimalisatie voor beheerde tabellen in Unity Catalog.
Automatische compressie en geoptimaliseerde schrijfbewerkingen zijn altijd ingeschakeld voor MERGE, UPDATEen DELETE bewerkingen. U kunt deze functionaliteit niet uitschakelen.
Azure Databricks stemt bestandsgroottes automatisch af voor door Unity Catalog beheerde tabellen. Voor externe tabellen en verouderde workloads kunt u automatische compressie, geoptimaliseerde schrijfbewerkingen en doelbestandsgrootten configureren om te bepalen hoe gegevens worden geschreven en gecomprimeerd.
Voor beheerde tabellen in Unity Catalog optimaliseert Databricks de meeste instellingen automatisch als u een SQL Warehouse of Databricks Runtime 11.3 LTS of hoger gebruikt.
Als u een workload bijwerkt vanuit Databricks Runtime 10.4 LTS of lager, raadpleegt u Upgraden naar automatische compressie op de achtergrond.
Wanneer uitvoeren OPTIMIZE
Automatische compressie en geoptimaliseerde schrijfbewerkingen verminderen elk kleine bestandsproblemen, maar zijn geen volledige vervanging voor OPTIMIZE. Voor tabellen groter dan 1 TB raadt Databricks aan om OPTIMIZE volgens een schema uit te voeren om bestanden verder samen te voegen. Databricks raadt liquid clustering aan voor verbeterd overslaan van gegevens. Wanneer liquid clustering is ingeschakeld, OPTIMIZE worden gegevens automatisch opnieuw ingedeeld door de clustersleutels. Zie Liquid Clustering gebruiken voor tabellen.
Voor beheerde tabellen in Unity Catalog wordt voorspellende optimalisatie automatisch uitgevoerd OPTIMIZE op tabellen waarvoor predictive optimization is ingeschakeld.
Automatisch optimaliseren
Automatisch optimaliseren beschrijft de instellingen autoOptimize.autoCompact en autoOptimize.optimizeWrite. Zie Automatische compressie en geoptimaliseerde schrijfbewerkingen.
Automatische compressie
Automatische compactie combineert kleine bestanden in tabelpartities om het probleem van kleine bestanden te verminderen. Het wordt synchroon uitgevoerd op het cluster dat de schrijfbewerking uitvoert, nadat de schrijfbewerking is voltooid en compacteert alleen bestanden die nog niet eerder zijn gecomprimeerd.
Automatische compressie en voorspellende optimalisatie zijn onafhankelijke functies die afzonderlijk of samen kunnen worden gebruikt. Automatische compressie wordt uitgevoerd op het cluster dat de schrijfbewerking uitvoert, terwijl bij voorspellende optimalisatie onderhoudsbewerkingen asynchroon worden uitgevoerd met behulp van serverloze rekenkracht.
Gebruik de volgende instellingen om automatische compressie te configureren:
| Instelling | Delta | Iceberg | Beschrijving |
|---|---|---|---|
| Automatische compressie inschakelen (tabeleigenschap) | autoOptimize.autoCompact |
autoOptimize.autoCompact |
Hiermee schakelt u automatische compressie op tabelniveau in. |
| Automatische compressie inschakelen (Spark-sessie) | spark.databricks.delta.autoCompact.enabled |
spark.databricks.iceberg.autoCompact.enabled |
Hiermee schakelt u automatische compressie op sessieniveau in. |
| Maximale grootte van uitvoerbestand | spark.databricks.delta.autoCompact.maxFileSize |
spark.databricks.iceberg.autoCompact.maxFileSize |
Hiermee bepaalt u de grootte van het doeluitvoerbestand. |
| Minimale bestanden om compressie te activeren | spark.databricks.delta.autoCompact.minNumFiles |
spark.databricks.iceberg.autoCompact.minNumFiles |
Hiermee stelt u het minimale aantal kleine bestanden in een partitie of tabel in om automatische compressie te activeren. |
Deze instellingen accepteren de volgende opties:
| Options | Gedrag |
|---|---|
auto (aanbevolen) |
Optimaliseert bestandsdoelgrootte terwijl andere automatisch afstemmingsfunctionaliteit gerespecteerd wordt. |
legacy |
Alias voor true. |
true |
Gebruik 128 MB als doelbestandsgrootte. Geen dynamische afmetingen. |
false |
Hiermee schakelt u automatische compressie uit. Kan worden ingesteld op sessieniveau om automatische compressie te overschrijven voor alle tabellen die in de workload zijn gewijzigd. |
Opmerking
Azure Databricks raadt aan om automatisch afstemmen te gebruiken om de grootte van het uitvoerbestand te beheren op basis van de tabelgrootte. Zie De bestandsgrootte automatisch afstemmen op basis van de tabelgrootte.
Geoptimaliseerde schrijfbewerkingen
Geoptimaliseerde schrijfbewerkingen verbeteren de bestandsgrootte wanneer gegevens worden geschreven en profiteren van latere leesbewerkingen in de tabel.
Geoptimaliseerde schrijfbewerkingen zijn het meest effectief voor gepartitioneerde tabellen, omdat ze het aantal kleine bestanden verminderen dat naar elke partitie wordt geschreven. Het schrijven van minder grote bestanden is efficiënter dan het schrijven van veel kleine bestanden, maar u ziet mogelijk nog steeds een toename van de schrijflatentie omdat de gegevens in willekeurige volgorde worden geschoven voordat ze worden geschreven.
In de volgende afbeelding ziet u hoe geoptimaliseerde schrijfbewerkingen werken:
Opmerking
Als u geoptimaliseerde schrijfbewerkingen gebruikt, raadt Databricks aan dat u niet uitvoert coalesce(n) of repartition(n) net voor een schrijfbewerking om het aantal geschreven bestanden te beheren.
Geoptimaliseerde schrijfbewerkingen zijn standaard ingeschakeld voor de volgende bewerkingen:
MERGE-
UPDATEmet subquery's -
DELETEmet subquery's
Geoptimaliseerde schrijfbewerkingen worden ook ingeschakeld voor CTAS instructies en INSERT bewerkingen bij het gebruik van SQL Warehouses. In Databricks Runtime 13.3 LTS en hoger hebben alle tabellen die zijn geregistreerd in Unity Catalog geoptimaliseerde schrijfbewerkingen ingeschakeld voor CTAS instructies en INSERT bewerkingen voor gepartitioneerde tabellen.
Geoptimaliseerde schrijfbewerkingen kunnen worden ingeschakeld op tabel- of sessieniveau met behulp van de volgende instellingen:
- Tabeleigenschap:
autoOptimize.optimizeWrite - SparkSession-instelling:
spark.databricks.delta.optimizeWrite.enabled(Delta) ofspark.databricks.iceberg.optimizeWrite.enabled(Iceberg)
Deze instellingen accepteren de volgende opties:
| Options | Gedrag |
|---|---|
true |
Gebruik 128 MB als doelbestandsgrootte. |
false |
Hiermee schakelt u geoptimaliseerde schrijfbewerkingen uit. Kan worden ingesteld op sessieniveau om geoptimaliseerde schrijfbewerkingen te overschrijven voor alle tabellen die in de workload zijn gewijzigd. |
Een doelbestandsgrootte instellen
Als u de grootte van bestanden in de tabel wilt afstemmen, stelt u de tabeleigenschaptargetFileSize in op de gewenste grootte. Wanneer alle optimalisatiebewerkingen voor gegevensindelingen zijn ingesteld, wordt geprobeerd bestanden van de opgegeven grootte te genereren, waaronder optimaliseren, liquide clustering, automatische compressie en geoptimaliseerde schrijfbewerkingen.
Opmerking
Wanneer u beheerde tabellen in Unity Catalog en SQL Warehouses of Databricks Runtime 11.3 LTS en hoger gebruikt, respecteren alleen OPTIMIZE opdrachten de targetFileSize instelling.
| Property | Beschrijving |
|---|---|
delta.targetFileSize (Delta)iceberg.targetFileSize (IJsberg) |
Type: Grootte in bytes of hogere eenheden. Beschrijving: De grootte van het doelbestand. Bijvoorbeeld 104857600 (bytes) of 100mb.Standaardwaarde: Geen |
Voor bestaande tabellen kunt u eigenschappen instellen en ongedaan maken met behulp van de SQL-opdracht ALTER TABLESET TBL PROPERTIES. U kunt deze eigenschappen ook automatisch instellen wanneer u nieuwe tabellen maakt met behulp van Spark-sessieconfiguraties. Raadpleeg de naslaginformatie over tabeleigenschappen voor meer informatie.
Bestandsgrootte automatisch afstemmen op basis van tabelgrootte
Om handmatige afstemming te minimaliseren, stemt Azure Databricks de bestandsgrootte van tabellen automatisch af op basis van de tabelgrootte. Azure Databricks gebruikt kleinere bestandsgrootten voor kleinere tabellen en grotere bestandsgrootten voor grotere tabellen, zodat het aantal bestanden in de tabel niet te groot wordt. Azure Databricks stemt tabellen die u hebt afgestemd met een specifieke doelgrootte niet automatisch af.
De grootte van het doelbestand is gebaseerd op de huidige grootte van de tabel. Voor tabellen kleiner dan 2,56 TB is de automatisch afgestemde doelbestandsgrootte 256 MB. Voor tabellen met een grootte tussen 2,56 TB en 10 TB groeit de doelgrootte lineair van 256 MB tot 1 GB. Voor tabellen groter dan 10 TB is de doelbestandsgrootte 1 GB.
Opmerking
Wanneer de grootte van het doelbestand voor een tabel groeit, worden bestaande bestanden niet opnieuw geoptimaliseerd in grotere bestanden met de OPTIMIZE opdracht. Een grote tabel kan daarom altijd een aantal bestanden hebben die kleiner zijn dan de doelgrootte. Als u deze kleinere bestanden ook in grotere bestanden wilt optimaliseren, kunt u een vaste doelbestandsgrootte voor de tabel configureren met behulp van de targetFileSize tabeleigenschap.
Wanneer een tabel incrementeel wordt geschreven, liggen de bestandsgrootten van het doel en het aantal bestanden dicht bij de volgende getallen, op basis van de tabelgrootte. Het aantal bestanden in deze tabel is slechts een voorbeeld. De werkelijke resultaten verschillen, afhankelijk van veel factoren.
| Tabelgrootte | Grootte van doelbestand | Geschat aantal bestanden in tabel |
|---|---|---|
| 10 GB | 256 MB | 40 |
| 1 terabyte | 256 MB | 4096 |
| 2,56 TB | 256 MB | 10240 |
| 3 TB | 307 MB | 12108 |
| 5 TB (terabyte) | 512 MB | 17339 |
| 7 TB | 716 MB | 20784 |
| 10 TB | 1 GB | 24437 |
| 20 TB (terabyte) | 1 GB | 34437 |
| 50 TB | 1 GB | 64437 |
| 100 TB | 1 GB | 114437 |
Beperk het aantal rijen dat in een gegevensbestand wordt geschreven.
Soms kunnen tabellen met smalle gegevens een fout tegenkomen waarbij het aantal rijen in een bepaald gegevensbestand de ondersteuningslimieten van de Parquet-indeling overschrijdt. Om deze fout te voorkomen, kunt u de configuratie spark.sql.files.maxRecordsPerFile van de SQL-sessie gebruiken om het maximum aantal records op te geven dat naar één bestand voor een tabel moet worden geschreven. Het opgeven van een waarde van nul of een negatieve waarde vertegenwoordigt geen limiet.
U kunt ook de optie maxRecordsPerFile DataFrameWriter gebruiken wanneer u de DataFrame-API's gebruikt om naar een tabel te schrijven. Wanneer maxRecordsPerFile is opgegeven, wordt de waarde van de configuratie spark.sql.files.maxRecordsPerFile van de SQL-sessie genegeerd.
Opmerking
Databricks raadt het gebruik niet aan maxRecordsPerFile , tenzij het nodig is om de fout te voorkomen. Deze instelling kan nodig zijn voor sommige beheerde tabellen van Unity Catalog met zeer smalle gegevens.
Upgraden naar automatische compressie op de achtergrond
Automatische compressie op de achtergrond is beschikbaar voor beheerde tabellen in Unity Catalog. Automatische compressie op de achtergrond vereist geen voorspellende optimalisatie. Wanneer u een verouderde workload of tabel migreert, gaat u als volgt te werk:
- Verwijder de Spark-configuratie
spark.databricks.delta.autoCompact.enabled(Delta) ofspark.databricks.iceberg.autoCompact.enabled(Iceberg) uit de configuratie-instellingen voor clusters of notebooks. - Voer
ALTER TABLE <table_name> UNSET TBLPROPERTIES (delta.autoOptimize.autoCompact)voor elke tabel (Delta) ofALTER TABLE <table_name> UNSET TBLPROPERTIES (iceberg.autoOptimize.autoCompact)(Iceberg) uit om verouderde instellingen voor automatische compressie te verwijderen.
Nadat u deze verouderde configuraties hebt verwijderd, wordt automatische compactie op de achtergrond automatisch geactiveerd voor alle door Unity Catalog beheerde tabellen.