MOC — dny 1 a 2
1. Představení Azure Databricks 2. Výběr a konfigurace compute 3. Objekty v Unity Catalogu 4. Zabezpečení Unity Catalogu 5. Governance Unity Catalogu 6. Datové modelování 7. Ingest dat
MOC — pokračování
8. Čištění a transformace dat 9. Data quality constraints · mimo osnovu 10. Datové pipelines 11. Lakeflow Jobs 12. Vývojový lifecycle · mimo osnovu 13. Monitoring a optimalizace
🏠 Rozcestník kurzu
Pod čarou — den 3
14. Průřez Microsoft Fabric 15. Power BI + Fabric + Databricks 16. Migrace z Oracle
🏠 Rozcestník kurzu
DP-750 · Kapitola 2

Výběr a konfigurace compute

Typy compute, ladění výkonu, funkce clusterů, knihovny a řízení přístupu
🗂 Výběr a konfigurace Compute

Cíle kapitoly

  • Zvolit vhodný typ compute pro daný workload (serverless vs. classic, all-purpose vs. job, SQL warehouse).
  • Nakonfigurovat výkon clusteru: typy VM, počet workerů, autoscaling, Photon a spot instance.
  • Využít funkce compute: policies, instance pools a automatickou terminaci.
  • Instalovat knihovny cluster-scoped i notebook-scoped způsobem z různých zdrojů.
  • Nastavit řízení přístupu ke compute: access modes, úrovně oprávnění a entitlements.
2.1

Volba vhodného typu compute

Volba typu compute přímo určuje náklady, výkon i provozní složitost. Základní dělení je dvojí: serverless compute spravuje kompletně Databricks (běží v jejich předplatném, startuje řádově v jednotkách sekund, škáluje automaticky), zatímco classic compute si konfigurujete sami a běží ve vašem Azure předplatném (start typicky v jednotkách minut, plná kontrola nad VM, sítí i runtime verzí).

Druhá osa je účel: all-purpose compute slouží interaktivnímu vývoji v notebooích a sdílí ho tým; job compute se vytváří pro automatizovaný běh jobu a po dokončení se sám ukončí — žádné idle náklady; SQL warehouse je compute optimalizovaný čistě pro SQL dotazy a BI.

Jaký workload? SQL dotazy / BI interaktivní vývoj (notebooky) automatizovaný job Potřebujete RDD API, R, GPU nebo vlastní síť? Vlastní konfigurace, spot instance, JAR? ano ne ano ne Serverless SQL warehouse Classic — dedicated mode Serverless notebooky Classic job compute Serverless jobs
Rozhodovací strom volby compute: začněte typem workloadu; k classic compute sahejte až tehdy, když narazíte na konkrétní limit serverless (RDD, R, GPU, vlastní síť či konfigurace).

Srovnání hlavních variant v kostce:

Typ computeStartSprávaVhodné proHlavní limit
Serverless (notebooky, joby)jednotky sekundminimálnívývoj, ETL, BIv noteboocích bez Scala, R, RDD API a JAR knihoven
Classic — standard modejednotky minutstřednísdílený týmový clustervyžaduje Unity Catalog
Classic — dedicated modejednotky minutstředníRDD, GPU, R, custom containersjeden uživatel/skupina
SQL warehouse serverlessjednotky sekundminimálníBI dashboardy, SQL analytikajen SQL workloady
SQL warehouse pro / classicjednotky minutstřednívlastní networking / základní SQLpomalejší škálování
Instance poolsrychlejší než start nového clusteruvyššíčasté starty classic clusterůplatíte idle VM
⚠️
Pozor: serverless v noteboocích nepodporuje Scala, R, JAR knihovny ani RDD API a omezuje vlastní Spark konfigurace. Limit se ale týká notebooků — JAR tasky v Lakeflow Jobs na serverless podporované jsou (dle dokumentace v public preview; stav ověřte v dokumentaci). Kdo potřebuje Scala či R interaktivně, RDD API nebo JAR knihovny v notebooku, jde do classic compute s dedicated access mode.
Serverless performance modes: rychlost vs. cena▼

Serverless pro joby a pipelines nabízí dva režimy. Performance-optimized (výchozí) drží pool předehřátých zdrojů — start v sekundách, vhodný pro latenci-citlivé úlohy. Standard mode startuje typicky za 4–6 minut, ale dle dokumentace může snížit spotřebu DBU až o 70 % — ideální pro plánované noční dávky, kde na startu nezáleží. Přepíná se togglem Performance optimized v detailu jobu; pro notebooky je k dispozici jen performance-optimized a standard mode nefunguje pro kontinuální pipelines ani runs/submit.

💡
Tip: u classic job compute výrazně šetří spot instance (Azure Spot VMs) — přebytečná kapacita Azure se slevou často až 90 %. Azure si je může vzít zpět s 30sekundovým varováním; Spark ale výpadek workeru ustojí přeplánováním tasků. Detaily v sekci 2.2.
2.2

Konfigurace výkonu: VM, workers, autoscaling

Výkon classic clusteru určují tři složky: celkový počet jader (maximální paralelismus — 8 workerů × 4 jádra = 32 souběžných tasků), celková paměť (kolik dat zvládnou joins a agregace v RAM, než začne spilling na disk) a lokální storage (mezisklad pro shuffle operace a cache).

Podle charakteru workloadu volíte rodinu VM:

Rodina VMOptimalizaceKdy použít
E-seriespaměťvelké joins, agregace, in-memory analytika
F-seriesCPUvýpočetně náročné transformace s malou pamětí
L-seriesstorage (NVMe)opakované čtení týchž dat, intenzivní caching
NC/ND-seriesGPUdeep learning, trénink modelů (vyžaduje Runtime ML)
Driver node koordinuje běh plánuje tasky vždy on-demand VM Worker 1 exekuce tasků Worker 2 exekuce tasků Worker 3…N přidává autoscaling autoscaling min. 2 → max. N workerů optimized: scale-up ve 2 krocích, scale-down dle shuffle stavu kontrola utilizace: job compute 40 s, all-purpose 150 s workery mohou být spot instance
Cluster tvoří driver (koordinace, vždy on-demand VM) a workery (exekuce). Autoscaling drží počet workerů mezi zadaným minimem a maximem podle aktuální zátěže.

Při stejném celkovém výkonu lze volit méně větších workerů (méně síťového provozu při shuffle — lepší pro analytické workloady s joins), nebo více menších (vyšší paralelismus — levnější pro jednoduché dávkové zpracování). Autoscaling zapnete zadáním min/max počtu workerů; Databricks používá optimized autoscaling, který škáluje nahoru ve dvou krocích a dolů umí jít i na ne-idle clusteru podle stavu shuffle souborů.

💡
Tip: autoscaling se vyplatí u proměnlivé zátěže (průzkum dat, ad-hoc analýzy). U předvídatelných steady-state workloadů dává fixní počet workerů stabilnější výkon i jednodušší plánování kapacity.
⚠️
Pozor: spot instance používejte jen pro workery, nikdy pro driver — když Azure zrekvíruje driver, padá celý cluster. Pro zmírnění dopadů zapněte decommissioning: worker po obdržení preemption notice stihne přesunout shuffle a cache data na zdravé uzly.
Flexible node types — pojistka proti stockoutu▼

Když Azure v regionu dojde kapacita zvoleného typu VM, cluster spadne na chybě CLOUD_PROVIDER_RESOURCE_STOCKOUT. Flexible node types automaticky sáhnou po kompatibilní alternativě (stejný počet vCPU, paměť v rozmezí 100–110 %, stejná architektura a disková konfigurace). Zapíná to workspace admin togglem Enable auto flexible node types v admin nastavení Compute; pro konkrétní cluster lze vypnout přes Clusters API nastavením alternate_node_type_ids na prázdný seznam. Zvlášť cenné u spot instancí — zkusí více typů, než spadne na on-demand.

ℹ️
Poznámka: úzká hrdla hledejte ve Spark UI — Jobs Timeline ukáže dlouhé stages, detail stage pak Shuffle Spill (Memory) a Shuffle Spill (Disk). Časté spillování = málo paměti, sáhněte po E-series nebo větších uzlech. Monitoringu se věnuje samostatná pozdější kapitola.
📚 Do hloubky na Learn: Configure autoscaling · Balance cost and performance (EN)
2.3

Funkce compute: Photon, policies, pools, auto-termination

Photon je nativní vykonávací engine, který nahrazuje části Sparku optimalizovaným C++ kódem. Nejvíc zrychluje joins, agregace a scany širokých tabulek; na Runtime 9.1 LTS+ je zapnutý ve výchozím stavu. U malých jobů dokončených pod dvě sekundy se ale nemusí vyplatit (Photon má vyšší DBU sazbu) a na GPU clusterech není podporovaný vůbec — pro ML na GPU ho vypněte.

Výběr Databricks Runtime řiďte účelem: pro interaktivní vývoj klidně nejnovější verzi, pro produkční joby LTS verze (delší podpora, otestovaná stabilita). Verze Sparku je s runtime svázaná — upgrade runtime = upgrade Sparku, proto ho v produkci testujte nejdřív v dev prostředí. Pro ML volte Databricks Runtime ML s předinstalovanými knihovnami a GPU ovladači (CUDA).

Auto-termination ukončí cluster po zadané době nečinnosti — konfigurace zůstává a cluster lze kdykoli nastartovat znovu. Pro interaktivní práci je rozumný timeout kolem 15–45 minut podle pracovních návyků týmu; job clustery se terminují automaticky po doběhnutí jobu.

Instance pools drží sadu předalokovaných idle VM: cluster z poolu startuje pod minutu, protože VM už běží. Konfigurujete minimum idle instancí (kolik clusterů typicky běží souběžně), maximální kapacitu (férové dělení kvóty mezi týmy) a idle auto-termination poolu; předehřátí konkrétní runtime verze na instancích start ještě zrychlí. Platíte VM v idle stavu (ne DBU), takže pool se vyplatí jen při častých startech — v éře serverless je to spíš nástroj pro classic-only scénáře.

Compute policies omezují, co si uživatelé smí naklikat: admin jimi vynutí povolené typy VM, maximální velikost clusteru, LTS runtime či povinný auto-termination. Databricks dodává předdefinované policies (např. Personal Compute, Shared Compute, Job Compute — ta vynucuje LTS runtime a produkční defaults); vlastní policy je JSON s pravidly:

JSON
{
  "spark_version": { "type": "regex", "pattern": ".*-lts.*" },
  "node_type_id": { "type": "allowlist",
                     "values": ["Standard_E4ds_v5", "Standard_E8ds_v5"] },
  "autotermination_minutes": { "type": "range",
                                "maxValue": 60, "defaultValue": 30 },
  "autoscale.max_workers": { "type": "range", "maxValue": 8 }
}
ℹ️
Poznámka: ukázka policy je ilustrační — kompletní syntaxi atributů a virtuálních polí ověřte v dokumentaci Databricks (Compute policies).
✓
Shrnutí: Photon = rychlejší dotazy (default, ne na GPU) · LTS runtime = produkční stabilita · auto-termination = žádné zapomenuté běžící clustery · pools = rychlý start classic clusterů · policies = mantinely a kontrola nákladů pro celý workspace.
2.4

Instalace knihoven

Runtime obsahuje stovky předinstalovaných balíčků, ale dřív či později potřebujete něco navíc. Zásadní je rozdíl mezi dvěma rozsahy instalace:

Cluster-scoped Cluster (Libraries tab) faker==40.8.0 · mssql-jdbc.jar notebook A notebook B job task sdílené všemi · přežije restart clusteru vyžaduje CAN MANAGE na clusteru Notebook-scoped notebook C %pip install faker==40.8.0 izolované Python prostředí jen pro tuto session nezasahuje ostatní notebooky zaniká s koncem session
Cluster-scoped knihovna platí pro všechny notebooky a joby na clusteru a přeinstalovává se při každém startu; notebook-scoped instalace přes %pip žije jen v dané session.

Compute-scoped (cluster-scoped) knihovny instalujete na záložce Libraries daného clusteru (vyžaduje oprávnění CAN MANAGE). Podporují Python wheels, Java JAR a R balíčky a přeinstalují se automaticky při každém startu clusteru — konzistentní prostředí pro celý tým. Nevýhoda: kolize verzí řešíte za všechny; když dva týmy potřebují různé verze téže knihovny, musí na oddělené clustery nebo k notebook-scoped instalaci.

Notebook-scoped knihovny instalujete přímo v notebooku a platí jen pro aktuální session:

PYTHON
# notebook-scoped instalace — plati jen pro tuto session
%pip install faker==40.8.0

# po instalaci se restartuje Python interpret
dbutils.library.restartPython()

Zdroje balíčků: veřejné repozitáře (PyPI pro Python, Maven pro Javu/Scalu se souřadnicemi groupId:artifactId:version, CRAN pro R), nebo soubory — workspace files (limit 500 MB) a Unity Catalog volumes (plná governance: přístup přes UC oprávnění, audit log). Od Runtime 15.0 lze instalovat i requirements.txt. Cesta pak vypadá např. /Volumes/main/engineering/libraries/mypackage-1.0.0-py3-none-any.whl — instalující identita potřebuje READ VOLUME.

⚠️
Pozor: na clusterech se standard access mode vyžadují Maven souřadnice, JAR soubory i init skripty schválení v allowlistu metastore adminem (Catalog Explorer → nastavení metastoru → Allowed JARs/Init Scripts). Allowlist funguje prefixově — /Volumes/prod-libraries/ povolí celý adresář; lomítko na konci nezapomeňte, jinak matchne i nechtěné prefixy.
💡
Tip: v produkci vždy pinujte verze (pymssql==2.3.9). Bez verze se instaluje „latest" a pipeline vám jednoho dne spadne na cizí breaking change. Výjimka: CRAN vždy tahá poslední verzi — R balíčky pinujte uložením souboru do volume.
Init skripty — kdy (ne)sáhnout po shellu▼

Init skripty běží při startu clusteru před spuštěním Spark driveru — hodí se na systémové věci, které knihovny nevyřeší: apt-get install systémových balíčků, proměnné prostředí, monitorovací agenty. Pro instalaci běžných knihoven je Databricks nedoporučuje — cluster-scoped knihovny jsou spravovatelnější. Skript uložte do UC volume (Runtime 13.3 LTS+), např. /Volumes/main/engineering/scripts/setup.sh; nenulový exit code kteréhokoli skriptu zastaví start clusteru. Berte je jako poslední možnost — env proměnné a Spark konfigurace často vyřeší compute policy elegantněji.

2.5

Řízení přístupu ke compute

Přístup ke compute se řídí ve workspace UI (ne v Azure portálu) a má dvě roviny: access mode clusteru (kdo a jak izolovaně na něm smí pracovat) a permission levels (co smí konkrétní uživatel s daným clusterem dělat).

Access mode se v UI defaultně nastavuje jako Auto: zvolí Standard, pokud nevyberete ML runtime nebo runtime pod 14.3 — pak automaticky padne volba na Dedicated. Standard access mode (dříve shared) umožňuje bezpečné sdílení clusteru více uživateli — izolaci kódu mezi uživateli zajišťuje Lakeguard. Dedicated access mode (dříve single-user) přiřazuje cluster jedinému uživateli nebo skupině a dává plná strojová oprávnění — nutné pro RDD API, R, GPU workloady a custom containers.

Permission levelCo umožňujeTypický držitel
NO PERMISSIONScluster není vidětvýchozí stav
CAN ATTACH TOpřipojit notebook, vidět Spark UI a metrikyanalytik
CAN RESTART+ start, stop, restartsenior engineer, team lead
CAN MANAGE+ editace konfigurace, knihovny, resize, oprávněnívlastník clusteru, admin

Oprávnění nastavíte přes Compute → menu clusteru → Permissions; změny platí okamžitě bez restartu. Tvůrce clusteru je jeho vlastníkem s CAN MANAGE, workspace admini mají CAN MANAGE všude automaticky. Vedle toho existují workspace-level entitlements — např. unrestricted cluster creation dovolí ne-adminovi zakládat clustery bez omezení velikosti (bez povyšování na admina); běžným uživatelům místo toho přidělte compute policy.

⚠️
Pozor: legacy režim No isolation shared se vyhněte úplně — uživatelé s pouhým CAN ATTACH TO na něm mohou v log4j souborech vidět klíče servisních účtů. Existující clustery v tomto režimu migrujte na standard nebo dedicated.
ℹ️
Poznámka: driver logy standardně vidí jen CAN MANAGE — stdout/stderr může obsahovat secrets. Chování řídí Spark konfigurace spark.databricks.acl.needAdminPermissionToViewLogs; její povolování si dobře rozmyslete a secrets vždy držte v secret scopes, ne v kódu.

Dedicated group access (Unity Catalog + Runtime 15.4+) umožňuje přiřadit cluster celé skupině: oprávnění každého člena se při připojení automaticky zúží na oprávnění skupiny (žádná eskalace privilegií) a objekty vytvořené na clusteru vlastní skupina, ne jednotlivec. Skupině vytvořte workspace složku (např. /Workspace/Groups/<groupName>) s CAN MANAGE pro notebooky a experimenty.

💡
Tip: oprávnění přidělujte skupinám, ne jednotlivcům, a držte se principu least privilege: analytik = CAN ATTACH TO, správce dostupnosti = CAN RESTART, CAN MANAGE jen vlastníkům. Přístupy pravidelně auditujte přes tabulku system.access.audit.
2.6

Lab 2: Select and Configure Compute in Azure Databricks (30 minut)

Pro zdravotnickou organizaci HealthBridge Analytics vytvoříte all-purpose cluster healthbridge-dev (LTS runtime, memory-optimized workery, autoscaling 1–3, auto-termination 15 minut, Photon), nainstalujete cluster-scoped knihovnu faker==40.8.0, srovnáte ji s notebook-scoped instalací přes %pip a vygenerujete syntetická pacientská data kombinací faker + PySpark.

▶ Otevřít lab na GitHubu (EN) · Learn modul k tématu — s krátkými výukovými videy

Ochutnávka z notebooku — syntetičtí pacienti bez rizika úniku skutečných dat:

PYTHON
from faker import Faker

fake = Faker()
# generovani syntetickych pacientu
pacienti = [(fake.name(), fake.date_of_birth(minimum_age=18, maximum_age=90),
             fake.city()) for _ in range(1000)]

df = spark.createDataFrame(pacienti, ["jmeno", "datum_narozeni", "mesto"])
display(df)
ℹ️
Poznámka: na kurzu lab prochází lektor jako demo. Postup je krokový a samoobslužný — pokud se na něj v rámci dne nedostane, projdete si ho samostatně.
✓
Sebekontrola: 1) Proč jste pro workery zvolili memory-optimized (E-series) VM, když má cluster dělat joins pacientských dat a laboratorních výsledků? 2) Co se stane s cluster-scoped knihovnou faker po restartu clusteru — a co s notebook-scoped instalací po konci session? 3) Který access mode byste zvolili, kdyby cluster sdílelo pět inženýrů, a který pro trénink GPU modelu v R?