Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Doporučení ručního ladění v tomto článku se nevztahují na spravované tabulky Katalogu Unity, které používají automatické ladění velikosti souborů. U nových tabulek použijte spravované tabulky Katalogu Unity s výchozím nastavením.
V Databricks Runtime 13.3 a novějších doporučuje Databricks používat clustering pro rozložení tabulky. Viz Použití metody 'liquid clustering' pro tabulky.
Databricks doporučuje použít prediktivní optimalizaci pro automatické spouštění OPTIMIZE a VACUUM pro tabulky. Viz prediktivní optimalizace spravovaných tabulek v katalogu Unity.
V Databricks Runtime 10.4 LTS a novějších jsou automatické komprimace a optimalizované zápisy vždy povoleny pro MERGE, UPDATEa DELETE operace. Tuto funkci nelze zakázat.
Existují možnosti ruční nebo automatické konfigurace velikosti cílového souboru pro zápisy a operace OPTIMIZE . Azure Databricks automaticky naladí mnoho z těchto nastavení a umožňuje funkce, které automaticky zlepšují výkon tabulky hledáním souborů správné velikosti.
Pokud používáte SQL Warehouse nebo Databricks Runtime 11.3 LTS nebo novější, databricks pro spravované tabulky Unity většinu těchto konfigurací automaticky naladí.
Pokud upgradujete úlohu z Databricks Runtime 10.4 LTS nebo níže, přečtěte si téma Upgrade na automatické komprimace na pozadí.
Kdy spustit OPTIMIZE
Automatické komprimace a optimalizované zápisy zmenšují malé problémy se soubory, ale nejsou úplnou náhradou za OPTIMIZE. Databricks doporučuje zejména pro tabulky větší než 1 TB spouštět OPTIMIZE podle plánu pro další konsolidaci souborů. Azure Databricks automaticky nespouští ZORDER na tabulkách, proto musíte použít OPTIMIZE společně s ZORDER k aktivaci pokročilého přeskakování dat. Viz Přeskočení dat.
U spravovaných tabulek v Katalogu Unity se prediktivní optimalizace automaticky spouští OPTIMIZE u tabulek s povolenou prediktivní optimalizací.
Co je automatická optimalizace v Azure Databricks?
Termín automatická optimalizace se někdy používá k popisu funkčnosti řízené nastaveními autoOptimize.autoCompact a autoOptimize.optimizeWrite. Tento termín byl vyřazen ve prospěch popisu každého nastavení jednotlivě. Viz automatické komprimace a optimalizované zápisy.
Automatické zhuštění
Automatické komprimace kombinuje malé soubory v oddílech tabulky, aby se automaticky snížily malé problémy se soubory. Automatické komprimace nastane po úspěšném zápisu do tabulky a synchronně se spustí v clusteru, který provedl zápis. Automatické komprimace zkomprimuje pouze soubory, které nebyly dříve komprimovány.
Automatické komprimace nevyžaduje prediktivní optimalizaci. Jedná se o nezávislé funkce, které je možné používat samostatně nebo společně. Automatické komprimace běží v clusteru, který provádí zápis, zatímco prediktivní optimalizace spouští operace údržby asynchronně pomocí bezserverového výpočetního prostředí.
Velikost výstupního souboru můžete řídit nastavením konfigurace spark.databricks.delta.autoCompact.maxFileSize pro Delta nebo spark.databricks.iceberg.autoCompact.maxFileSize Iceberg. Databricks doporučuje používat automatické ladění na základě úloh nebo velikosti tabulky. Viz Automatické ladění velikosti souboru na základě úloh a Automatické ladění velikosti souboru na základě velikosti tabulky.
Automatické komprimace se aktivuje jenom pro oddíly nebo tabulky, které mají alespoň určitý počet malých souborů. Volitelně můžete změnit minimální počet souborů potřebných k aktivaci automatické komprimace nastavením spark.databricks.delta.autoCompact.minNumFiles pro Delta nebo spark.databricks.iceberg.autoCompact.minNumFiles Iceberg.
Povolte automatické komprimace na úrovni tabulky nebo relace pomocí následujících nastavení:
- Vlastnost tabulky:
autoOptimize.autoCompact - Nastavení SparkSession:
spark.databricks.delta.autoCompact.enabled(Delta) nebospark.databricks.iceberg.autoCompact.enabled(Iceberg)
Tato nastavení přijímají následující možnosti:
| Možnosti | Chování |
|---|---|
auto (doporučeno) |
Ladí cílovou velikost souboru a zároveň respektuje další funkce automatického ladění. Vyžaduje Databricks Runtime 10.4 LTS nebo vyšší. |
legacy |
Alias pro true. Vyžaduje Databricks Runtime 10.4 LTS nebo vyšší. |
true |
Jako cílovou velikost souboru použijte 128 MB. Žádné dynamické změny velikosti. |
false |
Vypne automatické zhušťování. Lze nastavit na úrovni relace, aby se přepsalo nastavení automatického komprimování pro všechny tabulky upravené v pracovní zátěži. |
Důležité
V Databricks Runtime 9.1 LTS, když ostatní zapisovače provádějí operace, jako je DELETE, MERGE, UPDATE nebo OPTIMIZE souběžně, může automatická komprese způsobit selhání těchto úloh kvůli transakčnímu konfliktu. Nejedná se o problém v Databricks Runtime 10.4 LTS a novějších.
Optimalizované zápisy
Optimalizované zápisy zlepšují velikost souboru při zápisu dat a zlepšují následná čtení v tabulce.
Optimalizované zápisy jsou nejúčinnější pro dělené tabulky, protože snižují počet malých souborů zapsaných do každého oddílu. Zápis méně velkých souborů je efektivnější než zápis mnoha malých souborů, ale stále se může zobrazit zvýšení latence zápisu, protože data se před zápisem zahazují.
Následující obrázek ukazuje, jak optimalizované zápisy fungují:
Poznámka:
Můžete mít kód, který se spustí coalesce(n) nebo repartition(n) těsně před tím, než zapíšete data, abyste mohli řídit počet zapsaných souborů. Optimalizované zápisy eliminují potřebu použití tohoto modelu.
Optimalizované zápisy jsou ve výchozím nastavení povolené pro následující operace v Databricks Runtime 9.1 LTS a vyšší:
MERGE-
UPDATEs poddotazy -
DELETEs poddotazy
Optimalizované zápisy jsou také povoleny pro CTAS příkazy a INSERT operace při použití SQL Warehouse. Ve službě Databricks Runtime 13.3 LTS a vyšší mají všechny tabulky zaregistrované v katalogu Unity povolené optimalizované zápisy pro CTAS příkazy a INSERT operace pro particionované tabulky.
Optimalizované zápisy je možné povolit na úrovni tabulky nebo relace pomocí následujících nastavení:
- Vlastnost tabulky:
autoOptimize.optimizeWrite - Nastavení SparkSession:
spark.databricks.delta.optimizeWrite.enabled(Delta) nebospark.databricks.iceberg.optimizeWrite.enabled(Iceberg)
Tato nastavení přijímají následující možnosti:
| Možnosti | Chování |
|---|---|
true |
Jako cílovou velikost souboru použijte 128 MB. |
false |
Vypne optimalizované zápisy. Lze nastavit na úrovni relace, aby se přepsalo nastavení automatického komprimování pro všechny tabulky upravené v pracovní zátěži. |
Nastavení cílové velikosti souboru
Pokud chcete vyladit velikost souborů v tabulce, nastavte vlastnosttargetFileSize tabulky na požadovanou velikost. Pokud je tato vlastnost nastavená, všechny operace optimalizace rozložení dat se pokusí vygenerovat soubory se zadanou velikostí. Mezi příklady patří optimalizace nebo Z-řád, automatická komprimacea optimalizované zápisy.
Poznámka:
Pokud používáte spravované tabulky a SQL sklady Katalogu Unity nebo verzi Databricks Runtime 11.3 LTS a vyšší, pouze příkazy OPTIMIZE respektují nastavení targetFileSize.
| Vlastnictví | Description |
|---|---|
delta.targetFileSize (Delta)iceberg.targetFileSize (Iceberg) |
Typ: Velikost v bajtech nebo vyšších jednotkách. Popis: Cílová velikost souboru. Například 104857600 (bajty) nebo 100mb.Výchozí hodnota: None |
U existujících tabulek můžete nastavit a zrušit nastavení vlastností pomocí příkazu SQL ALTER TABLESET vlastnosti TBL. Tyto vlastnosti můžete také nastavit automaticky při vytváření nových tabulek pomocí konfigurací relace Sparku. Podrobnosti najdete v referenčních informacích k vlastnostem tabulky .
Velikost souboru Autotune na základě pracovní zátěže
Databricks doporučuje nastavit vlastnost tabulky tuneFileSizesForRewrites na hodnotu true pro všechny tabulky, na které cílí mnoho operací MERGE nebo DML, bez ohledu na Databricks Runtime, Unity Catalog nebo jiné optimalizace. Při nastavení na trueje cílová velikost souboru tabulky nastavená na mnohem nižší prahovou hodnotu, která zrychluje operace náročné na zápis.
Pokud není explicitně nastavená, Azure Databricks automaticky zjistí, jestli 9 z posledních 10 předchozích operací v tabulce byly MERGE operace a nastaví tuto vlastnost tabulky na true. Tuto vlastnost musíte explicitně nastavit na false, aby se zabránilo tomuto chování.
| Vlastnictví | Description |
|---|---|
delta.tuneFileSizesForRewrites (Delta)iceberg.tuneFileSizesForRewrites (Iceberg) |
Typ: BooleanPopis: Určuje, zda se mají optimalizovat velikosti souborů pro optimalizaci rozložení dat. Výchozí hodnota: None |
U existujících tabulek můžete nastavit a zrušit nastavení vlastností pomocí příkazu SQL ALTER TABLESET vlastnosti TBL. Tyto vlastnosti můžete také nastavit automaticky při vytváření nových tabulek pomocí konfigurací relace Sparku. Podrobnosti najdete v referenčních informacích k vlastnostem tabulky .
Automaticky upravit velikost souboru podle velikosti tabulky
Aby se minimalizovala potřeba ručního ladění, Azure Databricks automaticky naladí velikost souboru tabulek na základě velikosti tabulky. Azure Databricks použije menší velikosti souborů pro menší tabulky a větší velikosti souborů pro větší tabulky, aby se počet souborů v tabulce nezvětšil příliš velký. Azure Databricks automaticky nenastavuje ladění tabulek, které jste naladili s konkrétní cílovou velikostí nebo na základě zátěže s častými přepisy.
Cílová velikost souboru je založená na aktuální velikosti tabulky. U tabulek menších než 2,56 TB je velikost automaticky vyladěného cílového souboru 256 MB. U tabulek s velikostí mezi 2,56 TB a 10 TB se cílová velikost bude lineárně zvětšovat z 256 MB na 1 GB. U tabulek větších než 10 TB je cílová velikost souboru 1 GB.
Poznámka:
Když se cílová velikost souboru pro tabulku zvětší, existující soubory se neoptimalizuje do větších souborů příkazem OPTIMIZE. Velká tabulka proto může mít vždy některé soubory, které jsou menší než cílová velikost. Pokud je potřeba optimalizovat i menší soubory do větších souborů, můžete pro tabulku nakonfigurovat pevnou cílovou velikost pomocí vlastnosti tabulky targetFileSize.
Při přírůstkovém zápisu tabulky se cílové velikosti souborů a počty souborů v závislosti na velikosti tabulky blíží následujícím číslům. Počty souborů v této tabulce jsou pouze příkladem. Skutečné výsledky se budou lišit v závislosti na mnoha faktorech.
| Velikost tabulky | Cílová velikost souboru | Přibližný počet souborů v tabulce |
|---|---|---|
| 10 GB | 256 MB | 40 |
| 1 TB | 256 MB | 4096 |
| 2,56 TB | 256 MB | 10240 |
| 3 TB | 307 MB | 12108 |
| 5 TB (terabajtů) | 512 MB | 17339 |
| 7 TB | 716 MB | 20784 |
| 10 terabajtů | 1 GB | 24437 |
| 20 TB (terabajtů) | 1 GB | 34437 |
| 50 TB | 1 GB | 64437 |
| 100 TB | 1 GB | 114437 |
Omezení řádků zapsaných v datovém souboru
V některých případech můžou tabulky s úzkými daty narazit na chybu, kdy počet řádků v daném datovém souboru překračuje limity podpory formátu Parquet. Chcete-li se této chybě vyhnout, můžete pomocí konfigurace spark.sql.files.maxRecordsPerFile relace SQL určit maximální počet záznamů pro zápis do jednoho souboru pro tabulku. Určení hodnoty nuly nebo záporné hodnoty představuje žádný limit.
Ve službě Databricks Runtime 11.3 LTS a novější můžete také použít možnost maxRecordsPerFile DataFrameWriter při zápisu do tabulky pomocí rozhraní API datového rámce. Po specifikaci maxRecordsPerFile se hodnota konfigurace relace SQL spark.sql.files.maxRecordsPerFile ignoruje.
Poznámka:
Databricks nedoporučuje tuto možnost používat, pokud není nutné se vyhnout výše uvedené chybě. Toto nastavení může být stále nezbytné pro některé spravované tabulky Katalogu Unity s velmi úzkými daty.
Upgrade na automatickou komprimaci na pozadí
Automatická kompaktace na pozadí je k dispozici pro spravované tabulky Katalogu Unity v Databricks Runtime 11.3 LTS a vyšších. Automatické komprimace pozadí nevyžaduje prediktivní optimalizaci. Při migraci starší verze úlohy nebo tabulky postupujte takto:
- Odeberte konfiguraci Sparku
spark.databricks.delta.autoCompact.enabled(Delta) nebospark.databricks.iceberg.autoCompact.enabled(Iceberg) z nastavení konfigurace clustru nebo notebooku. - Pro každou tabulku spusťte
ALTER TABLE <table_name> UNSET TBLPROPERTIES (delta.autoOptimize.autoCompact)příkaz (Delta) neboALTER TABLE <table_name> UNSET TBLPROPERTIES (iceberg.autoOptimize.autoCompact)(Iceberg) a odeberte všechna starší nastavení automatické komprimace.
Po odebrání těchto starších konfigurací byste měli vidět automatické komprimace na pozadí aktivované automaticky pro všechny spravované tabulky Katalogu Unity.