Megosztás a következőn keresztül:


Apache Spark-futtatókörnyezetek a Fabricben

A Microsoft Fabric Runtime egy Apache Sparkon alapuló Azure-beli integrált platform, amely lehetővé teszi az adatfeldolgozási és adatelemzési élmények végrehajtását és kezelését. A belső és a nyílt forráskódú forrásból származó kulcsfontosságú összetevőket egyesíti, és átfogó megoldást kínál az ügyfelek számára. Az egyszerűség kedvéért az Apache Spark által üzemeltetett Microsoft Fabric Futtatókörnyezetet tekintjük át Fabric Runtime-ként.

A Fabric Runtime főbb összetevői:

  • Apache Spark – egy hatékony, nyílt forráskódú elosztott számítástechnikai kódtár, amely nagy léptékű adatfeldolgozási és elemzési feladatokat tesz lehetővé. Az Apache Spark sokoldalú és nagy teljesítményű platformot biztosít az adatelemzéshez és az adatelemzéshez.

  • Delta Lake – egy nyílt forráskódú tárolási réteg, amely ACID-tranzakciókat és más adatmegbízható funkciókat biztosít az Apache Spark számára. A Fabric Runtime-ban integrálva a Delta Lake javítja az adatfeldolgozási képességeket, és több egyidejű művelet adatkonzisztenciáját biztosítja.

  • Alapértelmezett szintű csomagok Java-/ Scala-, Python- és R-csomagokhoz , amelyek különböző programozási nyelveket és környezeteket támogatnak. Ezek a csomagok automatikusan települnek és konfigurálódnak, így a fejlesztők az adatfeldolgozási feladatokhoz az előnyben részesített programozási nyelveket alkalmazhatják.

  • A Microsoft Fabric Runtime egy robusztus, nyílt forráskódú operációs rendszerre épül, amely biztosítja a különböző hardverkonfigurációkkal és rendszerkövetelményekkel való kompatibilitást.

Az alábbiakban a Microsoft Fabric platformon belüli Runtime 1.1 és Runtime 1.2 fő összetevőinek átfogó összehasonlítását találja, beleértve az Apache Spark-verziókat, a támogatott operációs rendszereket, a Java-t, a Scalát, a Pythont, a Delta Lake-t és az R-t.

Tipp.

Mindig az éles számítási feladat legújabb, GA futtatókörnyezeti verzióját használja, amely jelenleg a Runtime 1.2.

Futtatókörnyezet 1.1 Futtatókörnyezet 1.2 Futtatókörnyezet 1.3
Apache Spark 3.3.1 3.4.1 3.5.0
Operációs rendszer 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.11
Delta Lake 2.2.0 2.4.0 3.1
R 4.2.2 4.2.2 4.3.3

Látogasson el a Runtime 1.1, a Runtime 1.2 vagy a Runtime 1.3 webhelyre az adott futtatókörnyezeti verzió részleteinek, új funkcióinak, fejlesztéseinek és migrálási forgatókönyveinek megismeréséhez.

Hálóoptimalizálások

A Microsoft Fabricben a Spark motor és a Delta Lake implementációi platformspecifikus optimalizálásokat és funkciókat tartalmaznak. Ezeket a funkciókat natív integrációk használatára tervezték a platformon belül. Fontos megjegyezni, hogy ezek a funkciók le is tilthatók a Spark és a Delta Lake standard funkcióinak eléréséhez. Az Apache Sparkhoz készült Fabric Runtimes a következőket foglalja magában:

  • Az Apache Spark teljes nyílt forráskódú verziója.
  • Közel 100 beépített, különálló lekérdezési teljesítménnyel rendelkező gyűjtemény. Ezek a fejlesztések olyan funkciókat tartalmaznak, mint a partíció gyorsítótárazása (amely lehetővé teszi a FileSystem partíciógyorsítótár számára a metaadattár-hívások csökkentését) és keresztcsatlakozás a skaláris subquery kivetítéséhez.
  • Beépített intelligens gyorsítótár.

Az Apache Sparkhoz és a Delta Lake-hez készült Fabric Runtime-on belül vannak natív írói képességek, amelyek két fő célt szolgálnak:

  1. Differenciált teljesítményt nyújtanak a számítási feladatok írásához, és optimalizálják az írási folyamatot.
  2. Alapértelmezés szerint a Delta Parquet-fájlok V-Order optimalizálása. A Delta Lake V-Order optimalizálása kulcsfontosságú az összes Fabric motor kiváló olvasási teljesítményének biztosításához. Ha részletesebben szeretné megismerni a működését és kezelésének módját, tekintse meg a Delta Lake-táblaoptimalizálásról és a V-Orderről szóló külön cikket.

Több futtatókörnyezet támogatása

A Fabric több futtatókörnyezetet is támogat, így a felhasználók rugalmasan válthatnak közöttük, így minimalizálva az inkompatibilitás vagy a megszakítások kockázatát.

Alapértelmezés szerint minden új munkaterület a legújabb futtatókörnyezeti verziót használja, amely jelenleg Runtime 1.2.

Ha módosítani szeretné a futtatókörnyezet verzióját a munkaterület szintjén, nyissa meg a Munkaterület beállításai > adatmérnök ing/Science > Spark számítási > munkaterület alapértelmezett szintjét, és válassza ki a kívánt futtatókörnyezetet az elérhető lehetőségek közül.

A módosítást követően a munkaterület összes rendszer által létrehozott eleme, beleértve a Lakehouse-t, az SJD-ket és a jegyzetfüzeteket is, az újonnan kiválasztott munkaterületszintű futtatókörnyezeti verzióval fog működni a következő Spark-munkamenettől kezdve. Ha jelenleg egy meglévő munkamenettel rendelkező jegyzetfüzetet használ egy feladathoz vagy egy tóházhoz kapcsolódó tevékenységhez, akkor a Spark-munkamenet a jelenlegi módon folytatódik. A következő munkamenettől vagy feladattól kezdve azonban a kiválasztott futtatókörnyezeti verzió lesz alkalmazva.

Gif, amely bemutatja, hogyan módosíthatja a futtatókörnyezet verzióját.

A futtatókörnyezet változásainak következményei a Spark-beállításokban

Általában az összes Spark-beállítás áttelepítésére törekszünk. Ha azonban azt állapítjuk meg, hogy a Spark-beállítás nem kompatibilis a Runtime B-vel, figyelmeztető üzenetet küldünk, és tartózkodunk a beállítás implementálásától.

Spark-beállítások futtatókörnyezetének módosítása.

A futtatókörnyezet változásainak következményei a könyvtárkezelésben

Általában az a megközelítésünk, hogy az összes kódtárat az A futtatókörnyezetből a B futtatókörnyezetbe migráljuk, beleértve a nyilvános és az egyéni futtatókörnyezeteket is. Ha a Python- és R-verziók változatlanok maradnak, a kódtáraknak megfelelően kell működnie. A Jars esetében azonban jelentős a valószínűsége annak, hogy a függőségek változásai, valamint más tényezők, például a Scala, a Java, a Spark és az operációs rendszer változásai miatt nem működnek.

A felhasználó felelős minden olyan kódtár frissítéséért vagy cseréjéért, amely nem működik a Runtime B-vel. Ha ütközés van, ami azt jelenti, hogy a Runtime B tartalmaz egy eredetileg a Runtime A-ban definiált tárat, a kódtár-felügyeleti rendszer megpróbálja létrehozni a szükséges függőséget a B futtatókörnyezethez a felhasználó beállításai alapján. Ütközés esetén azonban az építési folyamat meghiúsul. A hibanaplóban a felhasználók láthatják, hogy mely kódtárak okoznak ütközéseket, és módosíthatják a verziójukat vagy specifikációikat.

Könyvtárkezelési futtatókörnyezet módosítása.

A Delta Lake protokoll frissítése

A Delta Lake funkciói mindig visszamenőlegesen kompatibilisek, így az alacsonyabb Delta Lake-verzióban létrehozott táblák zökkenőmentesen használhatják a magasabb verziókat. Ha azonban bizonyos funkciók engedélyezve vannak (például módszer használatával delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) , az alacsonyabb Delta Lake-verziókkal való kompatibilitás sérülhet. Ilyen esetekben elengedhetetlen, hogy a frissített táblákra hivatkozó számítási feladatokat úgy módosítsa, hogy azok igazodjanak a kompatibilitást fenntartó Delta Lake-verzióhoz.

Minden Delta-tábla egy protokollspecifikációhoz van társítva, amely meghatározza az általa támogatott funkciókat. A táblázatot olvasásra vagy írásra használó alkalmazások erre a protokollspecifikációra támaszkodva állapítják meg, hogy kompatibilisek-e a tábla funkciókészletével. Ha egy alkalmazás nem képes kezelni a tábla protokolljában támogatottként felsorolt funkciókat, nem tud olvasni vagy írni a táblából.

A protokoll specifikációja két különböző összetevőre oszlik: az olvasási protokollra és az írási protokollra. A részletekért látogasson el a "Hogyan kezeli a Delta Lake a funkciókompatibilitást?" című lapot.

A FRISSÍTÉSTableProtocol metódus használatakor megjelenő azonnali figyelmeztetést megjelenítő GIF.

A felhasználók végrehajthatják a parancsot delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) a PySpark-környezetben, valamint a Spark SQL-ben és a Scalában. Ez a parancs lehetővé teszi számukra, hogy frissítést kezdeményezhessenek a Delta táblán.

Fontos megjegyezni, hogy a frissítés végrehajtásakor a felhasználók figyelmeztetést kapnak, amely azt jelzi, hogy a Delta protokoll verziójának frissítése nem visszafordítható folyamat. Ez azt jelenti, hogy a frissítés végrehajtása után nem vonható vissza.

A protokollverzió-frissítések hatással lehetnek a meglévő Delta Lake-táblaolvasók, írók vagy mindkettő kompatibilitására. Ezért célszerű körültekintően haladni, és csak akkor frissíteni a protokollverziót, ha szükséges, például új funkciók bevezetésekor a Delta Lake-ben.

Képernyőkép a delta lake protokoll frissítésekor megjelenő figyelmeztetésről.

Emellett a felhasználóknak ellenőrizniük kell, hogy az összes jelenlegi és jövőbeli éles számítási feladat és folyamat kompatibilis-e a Delta Lake-táblákkal az új protokollverzióval, hogy zökkenőmentes átmenetet biztosítson, és megelőzze az esetleges fennakadásokat.

Delta 2.2 és Delta 2.4 változások

A legújabb Fabric Runtime 1.3-es és Fabric Runtime 1.2-es verziójában az alapértelmezett táblázatformátum (spark.sql.sources.default) most van delta. A Fabric Runtime korábbi verzióiban , az 1.1-es verzióban és az Apache Spark összes Synapse Runtime-verziójában, amely a Spark 3.3-as vagy újabb verzióját tartalmazza, az alapértelmezett táblázatformátum a következőképpen lett definiálva parquet: . Az Azure Synapse Analytics és a Microsoft Fabric közötti különbségekért tekintse meg a táblázatot az Apache Spark konfigurációs adataival .

A Spark SQL, a PySpark, a Scala Spark és a Spark R használatával létrehozott összes tábla, amikor a táblatípus hiányzik, alapértelmezés szerint létrehozza a táblát delta . Ha a szkriptek explicit módon állítják be a táblaformátumot, az tiszteletben lesz tartva. USING DELTA A Spark create table parancsai redundánssá válnak.

A parquet táblaformátumot váró vagy feltételező szkripteket felül kell vizsgálni. A Delta-táblák nem támogatják a következő parancsokat:

  • 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