Moduly runtime Apache Sparku v prostředcích infrastruktury

Microsoft Fabric Runtime je platforma integrovaná v Azure založená na Apache Sparku, která umožňuje spouštění a správu dat a prostředí pro datové vědy. Kombinuje klíčové komponenty z interních i opensourcových zdrojů a poskytuje zákazníkům komplexní řešení. Pro zjednodušení odkazujeme na modul Runtime Microsoft Fabric, který využívá Apache Spark jako modul runtime Fabric.

Hlavní komponenty modulu runtime fabric:

  • Apache Spark – výkonná opensourcová distribuovaná výpočetní knihovna, která umožňuje rozsáhlé úlohy zpracování a analýzy dat. Apache Spark poskytuje univerzální a vysoce výkonnou platformu pro datové inženýrství a prostředí pro datové vědy.

  • Delta Lake – opensourcová vrstva úložiště, která do Apache Sparku přináší transakce ACID a další funkce spolehlivosti dat. Delta Lake integrovaná v prostředí Fabric Runtime vylepšuje možnosti zpracování dat a zajišťuje konzistenci dat napříč několika souběžnými operacemi.

  • Balíčky na úrovni výchozí úrovně pro balíčky Java/Scala, Python a R – které podporují různé programovací jazyky a prostředí. Tyto balíčky se instalují a konfigurují automaticky, což vývojářům umožňuje použít upřednostňované programovací jazyky pro úlohy zpracování dat.

  • Modul Runtime Microsoft Fabric je založený na robustním opensourcovém operačním systému, který zajišťuje kompatibilitu s různými konfiguracemi hardwaru a požadavky na systém.

Níže najdete komplexní porovnání klíčových komponent, včetně verzí Apache Sparku, podporovaných operačních systémů, Javy, Scaly, Pythonu, Delta Lake a R pro modul Runtime 1.1 i Runtime 1.2 na platformě Microsoft Fabric.

Modul runtime 1.1 Modul runtime 1.2 Modul runtime 1.3
Apache Spark 3.3.1 3.4.1 3.5.0
Operační systém Ubuntu 18.04 Mariner 2.0 Mariner 2.0
Java 8 11 11
Scala 2.12.15 2.12.17 2.12.17
Python 3,10 3,10 3,10
Delta Lake 2.2.0 2.4.0 3.0.0
R 4.2.2 4.2.2

Navštivte modul Runtime 1.1 nebo Runtime 1.2 a prozkoumejte podrobnosti, nové funkce, vylepšení a scénáře migrace pro konkrétní verzi modulu runtime.

Optimalizace prostředků infrastruktury

V Microsoft Fabric zahrnuje modul Spark i implementace Delta Lake optimalizace a funkce specifické pro danou platformu. Tyto funkce jsou navržené tak, aby používaly nativní integrace v rámci platformy. Je důležité si uvědomit, že všechny tyto funkce je možné zakázat, abyste dosáhli standardních funkcí Sparku a Delta Lake. Moduly runtime prostředků infrastruktury pro Apache Spark zahrnují:

  • Kompletní opensourcová verze Apache Sparku.
  • Kolekce téměř 100 integrovaných, jedinečných vylepšení výkonu dotazů. Mezi tato vylepšení patří funkce, jako je ukládání do mezipaměti oddílů (povolení mezipaměti oddílů FileSystem ke snížení počtu volání metastoru) a křížové spojení k projekci skalárního poddotazu.
  • Integrovaná inteligentní mezipaměť.

V prostředí Fabric Runtime pro Apache Spark a Delta Lake jsou k dispozici nativní funkce zápisu, které slouží dvěma klíčovým účelům:

  1. Nabízejí diferencovaný výkon pro psaní úloh a optimalizaci procesu zápisu.
  2. Ve výchozím nastavení mají optimalizaci V-Order souborů Delta Parquet. Optimalizace pořadí V-Order Delta Lake je zásadní pro zajištění špičkového výkonu čtení napříč všemi moduly Fabric. Pokud chcete získat hlubší přehled o tom, jak funguje a jak ho spravovat, přečtěte si vyhrazený článek o optimalizaci tabulek Delta Lake a V-Order.

Podpora více modulů runtime

Prostředky infrastruktury podporují více modulů runtime a nabízejí uživatelům flexibilitu při bezproblémovém přepínání mezi nimi, což minimalizuje riziko nekompatibility nebo přerušení.

Ve výchozím nastavení všechny nové pracovní prostory používají nejnovější verzi modulu runtime, která je aktuálně Runtime 1.2.

Pokud chcete změnit verzi modulu runtime na úrovni pracovního prostoru, přejděte do části Pracovní prostor Nastavení > Datoví technici/Výchozí úroveň pracovního prostoru Služby Science > Spark Compute > a z dostupných možností vyberte požadovaný modul runtime.

Po provedení této změny budou všechny položky vytvořené systémem v pracovním prostoru, včetně objektů Lakehouses, SJD a Notebooks, fungovat pomocí nově vybrané verze modulu runtime na úrovni pracovního prostoru počínaje příští relací Sparku. Pokud aktuálně používáte poznámkový blok s existující relací pro úlohu nebo aktivitu související s lakehousem, bude relace Sparku pokračovat tak, jak je. Ale počínaje další relací nebo úlohou se použije vybraná verze modulu runtime.

Gif znázorňující, jak změnit verzi modulu runtime

Důsledky změn modulu runtime ve Sparku Nastavení

Obecně se snažíme migrovat všechna nastavení Sparku. Pokud ale zjistíme, že nastavení Sparku není kompatibilní s modulem Runtime B, vydáme zprávu s upozorněním a nebudeme nastavení implementovat.

Změna modulu runtime Spark Nastavení

Důsledky změn modulu runtime při správě knihoven

Obecně platí, že naším přístupem je migrovat všechny knihovny z modulu runtime A do modulu runtime B, včetně veřejných i vlastních modulů runtime. Pokud verze Pythonu a R zůstanou beze změny, měly by knihovny správně fungovat. U Jars ale existuje velká pravděpodobnost, že nemusí fungovat kvůli změnám závislostí a dalším faktorům, jako jsou změny v jazyce Scala, Java, Spark a operační systém.

Uživatel zodpovídá za aktualizaci nebo nahrazení všech knihoven, které nefungují s modulem Runtime B. Pokud dojde ke konfliktu, což znamená, že modul runtime B obsahuje knihovnu původně definovanou v modulu runtime A, náš systém pro správu knihoven se pokusí vytvořit potřebnou závislost pro modul Runtime B na základě nastavení uživatele. Pokud dojde ke konfliktu, proces sestavení se nezdaří. V protokolu chyb můžou uživatelé zjistit, které knihovny způsobují konflikty, a provádět úpravy jejich verzí nebo specifikací.

Změna modulu runtime správy knihovny

Upgrade protokolu Delta Lake

Funkce Delta Lake jsou vždy zpětně kompatibilní a zajišťují, aby tabulky vytvořené v nižší verzi Delta Lake mohly bezproblémově pracovat s vyššími verzemi. Pokud jsou ale některé funkce povolené (například pomocí delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) metody, může dojít k ohrožení kompatibility s nižšími verzemi Delta Lake. V takových případech je nezbytné upravit úlohy odkazující na upgradované tabulky tak, aby odpovídaly verzi Delta Lake, která udržuje kompatibilitu.

Každá tabulka Delta je přidružená ke specifikaci protokolu a definuje funkce, které podporuje. Aplikace, které pracují s tabulkou, ať už pro čtení nebo zápis, spoléhají na tuto specifikaci protokolu, aby určily, jestli jsou kompatibilní se sadou funkcí tabulky. Pokud aplikace nemá možnost zpracovat funkci uvedenou jako podporovanou v protokolu tabulky, nemůže číst z této tabulky ani zapisovat do ní.

Specifikace protokolu je rozdělena do dvou různých komponent: read protocol a write protocol. Podrobnosti najdete na stránce "Jak Delta Lake spravuje kompatibilitu funkcí?" .

GIF zobrazující okamžité upozornění při použití metody upgradeTableProtocol.

Uživatelé mohou příkaz delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) spustit v prostředí PySpark a ve Spark SQL a Scala. Tento příkaz jim umožňuje zahájit aktualizaci tabulky Delta.

Je důležité si uvědomit, že při provádění tohoto upgradu se uživatelům zobrazí upozornění, že upgrade verze protokolu Delta je neodvolatelný proces. To znamená, že po spuštění aktualizace se nedá vrátit zpět.

Upgrady verzí protokolu můžou potenciálně ovlivnit kompatibilitu stávajících čtenářů tabulek Delta Lake, zapisovačů nebo obojího. Proto je vhodné pokračovat s opatrností a upgradovat verzi protokolu pouze v případě potřeby, například při přijímání nových funkcí v Delta Lake.

Snímek obrazovky s upozorněním při upgradu protokolu Delta Lake

Kromě toho by uživatelé měli ověřit, že všechny aktuální a budoucí produkční úlohy a procesy jsou kompatibilní s tabulkami Delta Lake pomocí nové verze protokolu, aby se zajistil bezproblémový přechod a zabránilo případným přerušením.

Rozdílové změny 2.2 a Delta 2.4

V nejnovější verzi modulu Fabric Runtime verze 1.2 je nyní deltavýchozí formát tabulky (spark.sql.sources.default) . V předchozích verzích modulu Fabric Runtime, verze 1.1 a ve všech modulech Synapse Runtime pro Apache Spark obsahující Spark 3.3 nebo novějších, byl výchozí formát tabulky definován jako parquet. Projděte si tabulku s podrobnostmi konfigurace Apache Sparku, kde najdete rozdíly mezi Azure Synapse Analytics a Microsoft Fabric.

Všechny tabulky vytvořené pomocí Spark SQL, PySpark, Scala Spark a Spark R při každém vynechání typu tabulky vytvoří tabulku jako delta ve výchozím nastavení. Pokud skripty explicitně nastaví formát tabulky, bude se respektovat. USING DELTA Příkaz ve Sparku create table commands se stane redundantní.

Skripty, které očekávají nebo předpokládají formát tabulky Parquet, by se měly revidovat. V tabulkách Delta nejsou podporované následující příkazy:

  • ANALYZE TABLE $partitionedTableName PARTITION (p1) COMPUTE STATISTICS
  • ALTER TABLE $partitionedTableName ADD PARTITION (p1=3)
  • ALTER TABLE DROP PARTITION
  • ALTER TABLE RECOVER PARTITIONS
  • ALTER TABLE SET SERDEPROPERTIES
  • LOAD DATA
  • INSERT OVERWRITE DIRECTORY
  • SHOW CREATE TABLE
  • CREATE TABLE LIKE

Vytváření verzí

Číslování verzí modulu runtime, zatímco úzce souvisí se sémantickou správou verzí, se řídí mírně odlišným přístupem. Hlavní verze modulu runtime odpovídá hlavní verzi Apache Sparku. Modul runtime 1 proto odpovídá Sparku verze 3. Podobně bude nadcházející modul runtime 2 odpovídat Sparku 4.0. Je důležité si uvědomit, že mezi aktuálními moduly runtime, modulem runtime 1.1 a modulem runtime 1.2 může dojít ke změnám, včetně přidání nebo odebrání různých knihoven. Naše platforma navíc nabízí funkci správy knihoven, která uživatelům umožňuje instalovat všechny požadované knihovny.