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.
A natív végrehajtási motor – az Apache Spark számítási feladatainak átalakító fejlesztése, amely jelentős teljesítménynövekedést kínál a Spark-lekérdezések lakehouse-infrastruktúrán történő közvetlen végrehajtásával. Zökkenőmentesen integrálva nem igényel kódmódosítást, és elkerüli a szállítók zárolását, és támogatja a Parquet és a Delta formátumokat az Apache Spark API-kban a Runtime 1.3-ban (Spark 3.5). Ez a motor a TPC-DS 1TB teljesítménytesztben látható módon akár négyszer gyorsabban is felgyorsítja a lekérdezéseket, mint a hagyományos OSS Spark, csökkentve az üzemeltetési költségeket, és javítja a hatékonyságot különböző adatfeladatok esetén – beleértve az adatbetöltést, az ETL-t, az elemzést és az interaktív lekérdezéseket is. A Meta Velox-jára és az Intel Apache Gluten-jára épülő megoldás optimalizálja az erőforrások használatát a különböző adatfeldolgozási forgatókönyvek kezelése során.
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 átfogó összehasonlítást talál az Apache Spark-verziók, a támogatott operációs rendszerek, a Java, a Scala, a Python, a Delta Lake és az R fő összetevőiről a Microsoft Fabric platformon belüli Apache Spark-alapú futtatókörnyezetekhez.
Tipp.
Az éles számítási feladathoz mindig a legújabb, GA futtatókörnyezeti verziót használja, amely jelenleg a Runtime 1.3.
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.2 |
R | 4.2.2 | 4.2.2 | 4.4.1 |
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.
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:
- Differenciált teljesítményt nyújtanak a számítási feladatok írásához, és optimalizálják az írási folyamatot.
- 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.
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.3.
A futtatókörnyezet verziójának munkaterületszinten történő módosításához lépjen Munkaterület beállításai>Adatmérnöki/tudományos>Spark-beállítások. A Környezet lapon válassza ki a kívánt futtatókörnyezeti verziót az elérhető lehetőségek közül. Válassza a Mentés gombot a választásának megerősítéséhez.
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.
Á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.
Á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.
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. Látogasson el a "Hogyan kezeli a Delta Lake a funkciókompatibilitást?" oldalra, hogy elolvassa a részleteket.
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.
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.
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