Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Natívny nástroj na spúšťanie je priekopníckym vylepšením pre vykonávanie úloh Apache Spark v službe Microsoft Fabric. Tento vektorovaný nástroj optimalizuje výkon a efektivitu dotazov služby Spark tak, že ich spustí priamo vo vašej infraštruktúre lakehouse. Bezproblémová integrácia nástroja znamená, že nevyžaduje žiadne úpravy kódu a vyhýba sa zablokovaniu dodávateľa. Podporuje Apache Spark API a je kompatibilný s Runtime 1.3 (Apache Spark 3.5) a Runtime 2.0 (Apache Spark 4.1) a funguje s formátmi Parquet, Delta a CSV. Bez ohľadu na umiestnenie vašich údajov v službe OneLake alebo ak pristupujete k údajom prostredníctvom odkazov, natívny nástroj na spúšťanie maximalizuje efektivitu a výkon.
Natívny nástroj na spúšťanie výrazne zvýši výkon dotazu a zároveň minimalizuje prevádzkové náklady. Skutočné výsledky sa líšia podľa charakteristiky pracovnej záťaže a konfigurácie. Nástroj je adept na správu širokej škály scenárov spracovania údajov od rutinnej príjmu údajov, dávkových úloh a ETL úloh (extrahovanie, transformácia, načítanie) až po komplexnú analýzu dátovej vedy a interaktívne dotazy. Používatelia môžu využívať zrýchlené časy spracovania, zvýšenú priepustnosť a optimalizované využitie prostriedkov.
Natívny nástroj na spúšťanie je založený na dvoch kľúčových súčastiach OSS: Velox, knižnicu zrýchlenia databázy C++, ktorú zaviedli Meta a Apache Glut (incubating), strednú vrstvu zodpovednú za vyťaženie nástrojov SQL založených na JVM na natívne motory predstavené spoločnosťou Intel.
Podporovaní operátori sú presúvaní zo Spark založeného na JVM na vektorovanú C++ vykonávaciu cestu, poskytujúcu stĺpcové, SIMD-akcelerované spracovanie s natívnou podporou pre formáty Parquet a Delta. Natívny engine zachováva kľúčové optimalizácie dotazov Fabric Spark, vrátane adaptívneho vykonávania dotazov (AQE), prepisov založených na nákladoch, orezávania stĺpcov a pushdownu predikátov, takže tieto správania optimalizátora zostávajú plne aktívne aj pri odklade operátorov. Engine tiež podporuje paralelné načítavanie Delta snapshotov a urýchľuje operácie, ktoré profitujú zo Z-usporiadania a Liquid Clustering na Delta tabuľkách, čím poskytuje ďalšie výkonové zisky pri organizovaných dátových rozloženiach.
Kedy použiť natívny nástroj na spúšťania
Natívny nástroj na spúšťanie ponúka riešenie na spúšťanie dotazov na rozsiahle množiny údajov. Optimalizuje výkon pomocou natívnych možností základných zdrojov údajov a minimalizuje režijné náklady zvyčajne spojené s pohybom údajov a serializáciou v tradičných prostrediach Spark. Nástroj podporuje rôzne operátory a typy údajov vrátane agregácie hash súhrnu, spojenia vnorenej slučky (BNLJ) a presných formátov časovej pečiatky. Ak však chcete plne využiť možnosti motora, mali by ste zvážiť jeho optimálne využitie:
- Nástroj je efektívny pri práci s údajmi vo formátoch Parquet a Delta, ktoré dokáže spracovať natívne a efektívne.
- Dotazy, ktoré zahŕňajú zložité transformácie a agregácie, výrazne profitujú zo stĺpcových možností spracovania a vektorizácie motora.
- Vylepšenie výkonu je najvýraznejšie v prípadoch, kde dotazy nespúšťajú záložný mechanizmus tým, že sa vyhýbajú nepodporovaným funkciám alebo výrazom.
- Nástroj je vhodný pre dotazy, ktoré sú výpočtovo náročné a nie jednoduché alebo I/O-bound.
Informácie o operátoroch a funkciách podporovaných natívnym spúšťaním nájdete v dokumentácii Apache Glut.
Povolenie natívneho nástroja na spúšťania
Na využitie úplných funkcií natívneho nástroja na spustenie počas fázy ukážky sú potrebné konkrétne konfigurácie. Nasledujúce postupy ukazujú, ako aktivovať túto funkciu pre poznámkové bloky, definície úloh služby Spark a celé prostredia.
Dôležité
Natívny engine na vykonávanie podporuje Runtime 1.3 (Apache Spark 3.5, Delta Lake 3.2) a Runtime 2.0 (Apache Spark 4.1, Delta Lake 4.1).
Povoliť na úrovni prostredia
Ak chcete zabezpečiť jednotné vylepšenie výkonu, povoľte natívny nástroj na spúšťanie vo všetkých úlohách a poznámkových blokoch priradených k vášmu prostrediu:
Prejdite do pracovného priestoru obsahujúceho vaše prostredie a vyberte prostredie. Ak nemáte vytvorené prostredie, pozrite si tému Vytvorenie, konfigurácia a používanie prostredia v službe Fabric.
V časti Výpočty Spark vyberte položku Zrýchlenie.
Začiarknite políčko s označením Povoliť natívny nástroj spúšťania.
Uložte a publikujte zmeny.
Ak je toto nastavenie povolené na úrovni prostredia, dedia všetky nasledujúce úlohy a poznámkové bloky. Toto dedenie zabezpečí, že všetky nové relácie alebo zdroje vytvorené v prostredí budú automaticky využívať vylepšené možnosti vykonávania.
Dôležité
V minulosti bolo natívny nástroj na spúšťania povolený prostredníctvom nastavení Spark v rámci konfigurácie prostredia. Natívny nástroj na spustenie teraz možno jednoduchšie povoliť pomocou prepínača na karte Acceleration (Zrýchlenie ) v nastaveniach prostredia. Ak chcete pokračovať v jej používaní, prejdite na kartu Acceleration (Zrýchlenie ) a zapnite prepínač. Môžete ho tiež povoliť prostredníctvom vlastností Spark, ak sa uprednostňuje.
Povolenie poznámkového bloku alebo definície úlohy služby Spark
Natívny nástroj na spustenie môžete tiež povoliť pre jeden poznámkový blok alebo definíciu úlohy služby Spark, musíte zahrnúť potrebné konfigurácie na začiatku spúšťania skriptu:
%%configure
{
"conf": {
"spark.native.enabled": "true",
}
}
V prípade poznámkových blokov vložte požadované konfiguračné príkazy do prvej bunky. V prípade definícií úloh služby Spark zahrňte konfigurácie v prvej línii definície úlohy služby Spark. Natívny nástroj na spúšťanie je integrovaný so živými bazénmi, takže po povolení funkcie sa prejaví okamžite bez toho, aby bolo potrebné iniciovať novú reláciu.
Ovládanie na úrovni dotazu
Mechanizmy na povolenie natívneho nástroja na spúšťanie na úrovni nájomníka, pracovného priestoru a prostredia bezproblémovo integrované s používateľskym rozhraním sú v aktívnom vývoji. Natívny nástroj na spúšťanie môžete zatiaľ zakázať pre konkrétne dotazy, a to najmä v prípade, ak zahŕňajú operátory, ktoré momentálne nie sú podporované (pozrite si obmedzenia). Ak chcete zakázať, nastavte spark konfiguráciu spark.native.enabled na hodnotu false pre konkrétnu bunku obsahujúcu váš dotaz.
- Spark SQL
- PySpark
- Iskra Scala
- SparkR
%%sql
SET spark.native.enabled=FALSE;
Po vykonaní dotazu, v ktorom je zakázaný natívny nástroj na spúšťanie, ho musíte znova povoliť pre nasledujúce bunky nastavením hodnoty spark.native.enabled na hodnotu true. Tento krok je nevyhnutný, pretože služba Spark vykonáva bunky kódu postupne.
- Spark SQL
- PySpark
- Iskra Scala
- SparkR
%%sql
SET spark.native.enabled=TRUE;
Identifikácia operácií vykonaných motorom
Existuje niekoľko metód na určenie, či bol operátor vo vašej práci v službe Apache Spark spracovaný pomocou natívneho nástroja na spustenie.
Server spark UI a Spark history
Získajte prístup k serveru Spark UI alebo Spark history a nájdite dotaz, ktorý potrebujete skontrolovať. Ak chcete pristupovať k webovému rozhraniu Sparku, prejdite do definície úlohy Spark a spustte ju. Na karte
V pláne dotazu zobrazenom v rozhraní používateľského rozhrania služby Spark vyhľadajte názvy uzla, ktoré sa končia príponou Transformer, *NativeFileScan alebo VeloxColumnarToRowExec. Prípona označuje, že natívny nástroj na spúšťanie vykonal operáciu. Uzly môžu byť napríklad označené ako RollUpHashAggregateTransformer, ProjectExecTransformer, BroadcastHashJoinExecTransformer, ShuffledHashJoinExecTransformer alebo BroadcastNestedLoopJoinExecTransformer. Pre zdroje CSV dát sa natívne skeny môžu zobrazovať ako natívne uzly skenovania súborov alebo transformátorov v rozhraní Spark, podobne ako scan uzly Parquet a Delta.
Vysvetlenie pre údajový rámec
Prípadne môžete vykonať príkaz v notebooku df.explain() a zobraziť plán vykonávania. V rámci výstupu vyhľadajte rovnaké
Upozornenia na Fabric Spark Advisor
Fabric Spark Advisor poskytuje v reálnom čase záložný prehľad počas vykonávania buniek notebooku. Keď sa operátor alebo segment plánu vráti k JVM-založenému Sparku namiesto natívnej cesty, Advisor zobrazí upozornenie priamo vo výstupe bunky notebooku, čo vám pomôže rýchlo identifikovať nepodporovaných operátorov alebo konfigurácie bez opustenia notebooku. Tieto upozornenia môžete použiť na diagnostiku, kedy nie je aplikované natívne offloadovanie, a na rozhodnutie, či upraviť dotaz alebo konfiguráciu.
Záložný mechanizmus
V niektorých prípadoch natívny nástroj na spúšťanie nemusí byť schopný vykonať dotaz z dôvodov, ako sú napríklad nepodporované funkcie. V týchto prípadoch operácia spadne späť k tradičnému nástroju Spark. Tento automatický záložný mechanizmus zaisťuje, že k pracovnému postupu nedôjde k žiadnemu prerušeniu.
Monitorovanie dotazov a údajových rámca, ktoré nástroj vykonáva
Ak chcete lepšie pochopiť použitie natívneho nástroja na spúšťanie v dotazoch SQL a operáciách údajového rámca a prejsť na detaily na úrovni fáz a operátorov, môžete si prečítať v téme Používateľské rozhranie služby Spark a Server histórie spark, kde nájdete podrobnejšie informácie o spúšťaní natívneho nástroja.
Karta Natívny nástroj na spúšťaie
Môžete prejsť na novú kartu Lepenie SQL /Údajový rámec a zobraziť si informácie o lepku a podrobnosti o spustení dotazu. Tabuľka Dotazy poskytuje prehľady o počte uzlov spustených v natívom nástroji a tých, ktoré spadajú späť do JVM pre každý dotaz.
Graf vykonávania dotazov
Môžete si tiež vybrať v popise dotazu pre vizualizáciu plánu vykonávania dotazu Apache Spark. Graf vykonávania poskytuje natívne podrobnosti o spúšťaní v jednotlivých fázach a príslušných operáciách. Farby pozadia odlišujú spúšťacie zariadenia: zelená predstavuje nástroj na natívne spustenie, zatiaľ čo svetlomodrá označuje, že operácia je spustená v predvolenom nástroji JVM.
Obmedzenia
Hoci natívny výkonný engine (NEE) v Fabric výrazne zvyšuje výkon pre úlohy Apache Spark, momentálne má nasledujúce obmedzenia. Niekoľko položiek súvisiacich s korektnosťou, ktoré sa vzťahovali na Runtime 1.3 (Apache Spark 3.5), je vyriešených v Runtime 2.0 (Apache Spark 4.1); Každá položka uvádza čas behu, na ktorý sa vzťahuje.
Existujúce obmedzenia
Nekompatibilné funkcie Spark (všetky runtime): Natívny výkonný engine momentálne nepodporuje štruktúrované streamovanie. Ak používate nepodporované funkcie priamo alebo cez importované knižnice, Spark sa vráti k svojmu predvolenému enginu. Natívny výkonný engine teraz podporuje Python UDF, Scala UDF a zložité dátové typy (polia, mapy, štruktúry). Pre viac informácií pozri Python UDF, Scala UDF a zložité dátové typy v natívnom výkonnom engine.
Nepodporované formáty súborov (všetky runtime): Natívny výkonný engine nezrýchľuje dotazy na
JSONXMLa formáty. Tieto formáty sa automaticky vracajú k bežnému Spark JVM enginu na spustenie. Vektorizovaný CSV parser teraz podporuje CSV.ANSI režim (len Runtime 1.3): V runtime 1.3 (Apache Spark 3.5) natívny výkonný engine nepodporuje ANSI SQL režim. Ak zapnete ANSI SQL režim, vykonávanie sa vráti k pôvodnému Spark enginu. Na Runtime 2.0 (Apache Spark 4.1) je podporovaný ANSI SQL režim: operátori sa presúvajú do natívneho enginu a ANSI chybová semantika (napríklad delenie nulou a neplatné casty) sa konzistentne vynucujú v JVM Spark.
Nesúlady typov dátumového filtra (všetky runtime): Aby ste využili zrýchlenie natívneho výkonného enginu, zabezpečte, aby obe strany porovnania dátumu boli zhodné v dátovom type. Napríklad namiesto porovnania stĺpca
DATETIMEs reťazcovým literálom ho explicitne pretypujte tak, ako je to znázornené:CAST(order_date AS DATE) = '2024-05-20'
Ďalšie dôležité informácie a obmedzenia
Poznámka
Desiatkové vysielanie, časové pásmo, duplikátny kľúč a/collect_set()collect_list()položky v tejto sekcii platia pre Runtime 1.3 (Apache Spark 3.5) a sú vyriešené v Runtime 2.0 (Apache Spark 4.1).map()round() Sú zachované pre používateľov, ktorí stále bežia na Runtime 1.3.
Nesúlad pri odlievaní desatinných a plávajúcich (Runtime 1.3; vyriešené v Runtime 2.0): Pri prelievaní z
DECIMALdoFLOAT, Spark zachováva presnosť konverziou na reťazec a jeho analýzou. Na runtime 1.3 NEE (cez Velox) vykonáva priamy casting z internejint128_treprezentácie, čo môže viesť k rozdielom v zaokrúhľovaní.Chyby konfigurácie časových pásiem (Runtime 1.3; vyriešené v Runtime 2.0): V Runtime 1.3 nastavenie nerozpoznaného časového pásma v Sparku spôsobí zlyhanie úlohy pod NEE, zatiaľ čo Spark JVM to rieši elegantne. Príklad:
"spark.sql.session.timeZone": "-08:00" // May cause failure under NEE on Runtime 1.3Nekonzistentné zaokrúhľovanie (Runtime 1.3; vyriešené v Runtime 2.0): V runtime 1.3 sa funkcia
round()správa inak v NEE kvôli závislosti nastd::round, ktorá nereplikuje logiku zaokrúhľovania Sparku. Tento rozdiel môže viesť k numerickým nekonzistenciám vo výsledkoch zaokrúhľovania.Chýba funkcia kontroly
map()duplicitného kľúča (Runtime 1.3; vyriešené v Runtime 2.0): Keďspark.sql.mapKeyDedupPolicyje nastavený na EXCEPTION, Spark vyhodí chybu na duplicitné kľúče. V runtime 1.3 NEE túto kontrolu preskočí a umožní dotazu nesprávne uspieť. Na Runtime 2.0 NEE pravidelne zvyšujeDUPLICATED_MAP_KEYhodnoty spolu s JVM Spark.
Príklad:SELECT map(1, 'a', 1, 'b'); -- Should fail with duplicate keysVariancia poradia v s
collect_list()triedením (Runtime 1.3; vyriešené v Runtime 2.0): Pri použitíDISTRIBUTE BYaSORT BY, Spark zachováva poradie prvkov vcollect_list(). V runtime 1.3 môže NEE vracať hodnoty v inom poradí kvôli rozdielom v náhodnom zamiešaní, čo môže viesť k nesúladu očakávaní pre logiku citlivú na poradie.Nesúlad medzistupňov pre
collect_list()/collect_set()(Runtime 1.3; vyriešené v Runtime 2.0): V runtime 1.3 používaBINARYSpark ako medzityp pre tieto agregácie, zatiaľ čo NEE používaARRAY. Tento nesúlad môže viesť k problémom s kompatibilitou počas plánovania alebo vykonávania dotazu.Spravované privátne koncové body požadované pre prístup k úložisku (všetky runtime): Keď je povolený Native Execution Engine (NEE) a ak sa spark úlohy snažia pristupovať k úložnému účtu cez spravovaný privátny koncový bod, musíte nastaviť samostatné spravované privátne koncové body pre Blob (blob.core.windows.net) aj DFS / File System (dfs.core.windows.net) koncové body, aj keď smerujú na ten istý úložný účet. Nemôžete použiť jeden endpoint pre obe aplikácie. Toto obmedzenie môže vyžadovať dodatočnú sieťovú konfiguráciu pri povolení natívneho vykonávacieho enginu v pracovnom priestore, ktorý spravuje privátne koncové body k úložným účtom.