Doporučení pro optimalizaci Azure Databricks

Pomalé dotazy a vysoké výpočetní náklady obvykle pramení z několika příčin: čtení více dat, než dotaz potřebuje, přesouvání dat mezi uzly, špatný plán dotazů nebo přepsání souborů, které se nezměnily. Azure Databricks řeší mnoho z těchto příčin automaticky u pracovních zátěží od rozsáhlého ETL zpracování až po ad-hoc, interaktivní dotazy. Jiné optimalizace platí pouze tehdy, když je zapnete nebo upravíte pro konkrétní pracovní zátěž.

Tato stránka začíná doporučeními pro většinu pracovních zátěží, poté seskupuje optimalizace podle toho, zda běží automaticky nebo vyžadují konfiguraci, a popisuje problém, který každé z nich řeší. Většina optimalizací Databricks Runtime vyžaduje Delta Lake, výchozí formát tabulek v Azure Databricks.

Začněte těmito doporučeními

Tyto volby přinášejí největší výkonnostní zisky u většiny pracovních zátěží. Také pomáhají mnoha automatickým optimalizacím na této stránce fungovat naplno.

  • Pro uspořádání tabulek použijte liquid clustering.Liquid clustering nahrazuje rozdělení tabulek a ZORDER. Data jsou organizována podle sloupců, na které často filtrujete, což zlepšuje vynechávání dat a dynamické ořezávání souborů.
  • Používejte spravované tabulky v Unity Catalog.Prediktivní optimalizace automaticky udržuje spravované tabulky. Viz tabulky spravované službou Unity Catalog pro Delta Lake a Apache Iceberg.
  • Použijte výpočetní prostředky s technologií Photon. Prediktivní I/O vyžaduje Photon, stejně jako dynamické ořezávání souborů v MERGE, UPDATE, a příkazech DELETE . Podívejte se na co je Photon?
  • Povolte mazací vektory. Prediktivní I/O používá vektory mazání, aby se zabránilo přepisování celých souborů během aktualizací, mazání a slučování, a souběžnost na úrovni řádků je vyžaduje. Pro tabulky Delta Lake musíte explicitně povolit vektory mazání. Podívejte se na vektory odstranění v Databricks.
  • Použijte nejnovější Databricks Runtime. Nové verze zahrnují nejnovější vylepšení výkonu. Některé optimalizace vyžadují minimální verzi Databricks Runtime nebo výpočetní prostředí s podporou Photonu. Požadavky najdete na každé stránce.

Automatické optimalizace

Tyto optimalizace jsou zapnuté ve výchozím nastavení. Nemusíte je povolovat, ale některé přinášejí větší přínos, když vaše tabulky a výpočetní prostředí splňují určité podmínky, například používání Photonu nebo udržování aktuálních statistik tabulky.

  • Disková mezipaměť: Zrychluje dotazy, které opakovaně čtou stejné vzdálené datové soubory Parquet a Delta Lake. Azure Databricks ukládá kopie souborů do mezipaměti v místním úložišti výpočetních uzlů, takže pozdější čtení probíhá lokálně. Azure Databricks tuto funkci automaticky umožňuje u typů instancí pracovních uzlů, které ji podporují.
  • Dynamické ořezávání souborů: Přeskočí soubory, které nemohou obsahovat odpovídající řádky v spojích v tabulkách Delta Lake. MERGE, UPDATE a příkazy SQL DELETE vyžadují výpočty s podporou Photonu pro dynamické ořezávání souborů.
  • Low shuffle merge: Zrychluje MERGE operace, které aktualizují nebo mazou několik řádků v každém souboru. Low shuffle merge zpracovává nemodifikované řádky bez shuffle a zachovává jejich stávající datové uspořádání.
  • Adaptivní vykonávání dotazů: Znovu optimalizuje plány dotazů během jejich spouštění, na základě skutečné velikosti dat. To opravuje pomalé strategie spojování, příliš mnoho malých úkolů a nevyvážené úlohy vyplývající z nepřesných odhadů.
  • Prediktivní I/O: Zrychluje skenování dat a snižuje množství dat přepisovaných během aktualizací, mazání a sloučení na výpočetních prostředcích s podporou Photonu.
  • Optimalizátor založený na costech: Používá tabulkové a sloupcové statistiky k výběru efektivních plánů dotazů, zejména u dotazů s více JOINy. Optimalizátor založený na ceně závisí na statistikách, takže je sbírejte a udržujte aktuální.
  • Prediktivní optimalizace: Automaticky spustí OPTIMIZE, VACUUM a ANALYZE na tabulkách spravovaných službou Unity Catalog, takže není potřeba plánovat údržbu tabulek. Také udržuje aktuální statistiky, které používá optimalizátor založený na nákladech. Pro ověření, zda je to povoleno pro váš účet, podívejte se na Ověřit, zda je prediktivní optimalizace zapnutá.

Optimalizace, které nastavíte

Tyto optimalizace vyžadují, abyste je zapnuli, ladili nebo změnili konfiguraci tabulky. Používejte je, když pracovní zátěž vyžaduje chování, které výchozí nastavení nepokrývá.

  • Podpora archivace: Použijte, když zásady životního cyklu cloudového úložiště přesunou starší tabulkové soubory do archivních úložišť pro snížení nákladů na úložiště. Podpora archivace určuje Azure Databricks, aby ignoroval soubory starší než stanovené období, aby politika životního cyklu nenarušila dotazy, které čtou pouze nedávná data. Tato funkce je ve verzi Public Preview.
  • Spojení podle intervalu: Použijte, když spojení používá podmínku bodu v intervalu nebo překryvu intervalů. Databricks SQL automaticky optimalizuje range joiny. V jiných výpočetních prostředích optimalizujte spojení podle rozsahu pomocí hintů pro spojení nebo konfigurace relace.
  • Izolační úrovně a konflikty zápisu: Použijte v situacích, kdy souběžné zápisy do stejné tabulky kolidují, nebo když workload vyžaduje přísnější záruky než výchozí úroveň izolace WriteSerializable. Serializovatelná izolace snižuje propustnost pro souběžné zápisy. Souběžnost na úrovni řádků automaticky řeší mnoho konfliktů při souběžných zápisech na tabulkách, které splňují její požadavky.
  • Indexy fulltextového vyhledávání: Použijte, když dotazy prohledávají textové sloupce na podřetězce nebo slova pomocí funkcí search nebo isearch Index přeskakuje soubory, které nemohou obsahovat řádky odpovídající dotazu. Tato funkce je v beta verzi.

Poznámka:

Indexy Bloomových filtrů jsou zastaralou funkcí přeskakování dat. Přidávají režijní zátěž na psaní a je obtížné je ladit. Pokud je vaše tabulky obsahují, podívejte se na Indexy Bloom filter (zastaralé), jak je nahradit a odstranit.

Další výkonnostní vlastnosti

  • Funkce vyššího řádu mají vestavěné, optimalizované zpracování pro mnoho operací, pro které Spark nemá běžné operátory. Funkce vyššího řádu fungují lépe než uživatelsky definované funkce.
  • Azure Databricks má vestavěné operátory a speciální syntaxi pro práci s komplexními datovými typy, včetně polí, struktur a JSON řetězců.
  • Spark SQL provádí dotazy nad řetězci JSON bez předchozího parsování.
  • Informace o řízení velikosti datových souborů, které vznikají při zápisu, najdete v tématu Řízení velikosti datového souboru.
  • Pro doporučení ohledně návrhu tabulek a údržby viz Nejlepší postupy: Delta Lake.

Diagnostika pomalých nebo nákladných úloh

Pokud je pracovní zátěž pomalejší nebo dražší, než jste čekali, a nevíte proč, použijte rozhraní Spark k nalezení úzkého místa před změnou konfigurace. Viz Diagnostika nákladových a výkonových problémů pomocí rozhraní Spark.