Mi az a Photon?

A Photon a Azure Databricks natív vektoros lekérdezési motor, amely felgyorsítja az SQL-számítási feladatokat, a DataFrame API-hívásokat, az ETL-folyamatokat és az állapot nélküli streamelési számítási feladatokat. A Photon oszlopos kötegekben dolgozza fel az adatokat, ami jelentős teljesítménybeli javulást eredményez a hagyományos soralapú végrehajtással szemben. A Photon kompatibilis az Apache Spark API-kkal is, így a meglévő kóddal működik, és nincs szükség módosításokra.

A Photon működése

Támogatott műveletek esetén a Photon lecseréli a JVM-alapú Spark SQL végrehajtási motort egy natív C++ futtatókörnyezetre. Az Apache Spark lekérdezésoptimalizáló (Catalyst) továbbra is tervezi a lekérdezést, de a Photon a végrehajtási rétegben veszi át a feladatát, és sorok helyett oszlopos kötegekben dolgozza fel az adatokat. Amikor a Photon nem támogatott műveletet tapasztal a lekérdezés végrehajtása során, az transzparens módon visszaesik a Spark-futtatókörnyezetbe a művelet hátralévő részében.

A Photon egyszerre több ezer sorból álló kötegekben dolgozza fel az adatokat, így a modern processzorok SIMD-utasításokat használhatnak, amelyek processzorciklusonként több értéket értékelnek ki. A JVM helyett natív C++-ban történő végrehajtással a Photon megszünteti a szemétgyűjtés szüneteltetését, a JIT bemelegítési késleltetését és a memóriaterhelést. Az oszlopos kötegfeldolgozás gyorsítótárbarát szekvenciális olvasást tesz lehetővé, ami maximalizálja a memória sávszélességét és a processzorfolyamat hatékonyságát.

A Photon architektúrája számos módon javítja a teljesítményt:

  • Lekérdezésgyorsítás: A Photon akár 5-ször jobb árat/teljesítményt biztosít az adat- és elemzési számítási feladatokhoz más felhőalapú adattárházakhoz képest, az iparági szabványnak megfelelő TPC-DS teljesítménymutatók alapján.
  • Optimalizált joinok és keverések: A sort-merge joinokat nagy teljesítményű hash joinokra cseréli, és egy újratervezett, oszlopalapú keverést használ a nagyméretű joinok átviteli sebességének növelésére.
  • Írási teljesítmény: A Photon natív Parquet-írója felgyorsítja a Delta Lake-, Apache Iceberg- és Parquet-írásokat, beleértve a UPDATE, DELETE, MERGE INTO, INSERT és CREATE TABLE AS SELECT műveleteket. A több ezer oszlopot tartalmazó széles táblák esetében különösen jelentős javulás tapasztalható.
  • Beolvasási hatékonyság: Szűrőleküldést, szótáralapú szűkítést és sorcsoportok kihagyását alkalmazza a tárolóból beolvasott adatmennyiség csökkentése érdekében, még sok kis fájl kezelése esetén is.
  • Lemezgyorsítótár és egyidejűség: Gyorsabb ismétlődő hozzáférést biztosít a lemezgyorsítótáron keresztül, és javítja az egyidejű lekérdezések átviteli sebességét az interaktív BI-számítási feladatokban.
  • Integration with SQL and Dataframes API: Támogatja az SQL és DataFrame API-kat Python, R, Scala és Java kódmódosítás nélkül.

A Photon a nagy adathalmazokat feldolgozó, hosszabb ideig futó lekérdezések számára nyújtja a legnagyobb előnyt. A két másodperc alatt általában befejezett lekérdezések nem látnak értelmes javulást, mivel a végrehajtási időt az adatfeldolgozás helyett a tervezés és az ütemezés határozza meg.

Integráció a Azure Databricks platformmal

A Photon felgyorsítja a számítási feladatokat a Azure Databricks platformon. A Photon használatához nem kell módosítania a kódot vagy a lekérdezéseket.

  • SQL-elemzés és BI: A Photon az összes SQL-adattárház alapértelmezett lekérdezési motorja; ez működteti az irányítópultokat, az ad hoc lekérdezéseket és az ütemezett jelentéseket.
  • ETL és adatmérnökség: Az SQL-lel vagy a DataFrame API-val készített kötegelt feladatok gyorsabb beolvasást, összekapcsolásokat, aggregációkat és írási műveleteket tesznek lehetővé. A beépített Parquet-írómodul különösen hatékony a Delta Lake-, Apache Iceberg- vagy Parquet-táblákba történő betöltéshez.
  • Lakeflow-folyamatok: A Photon engedélyezése a folyamatkonfigurációban segít felgyorsítani a Lakeflow-folyamatok végrehajtását.
  • Adatfolyam-feldolgozás: A Photon támogatja az állapot nélküli adatfolyam-feldolgozást Delta- vagy Parquet-célba történő írás során. A támogatott források közé tartozik a Delta, a Parquet, a CSV, a JSON, a Kafka és a Kinesis. Az állapotalapú streamelés nem támogatott.
  • Mesterséges intelligencia és gépi tanulás: A Photon javítja a Spark SQL, a DataFrames, a jellemzőtervezés és a GraphFrames-műveletek teljesítményét.

Foton engedélyezése

A Photon engedélyezve van kiszolgáló nélküli számítási, SQL-raktárakban és kiszolgáló nélküli Lakeflow-folyamatokban.

A klasszikus teljes célú számítás, a feladatok számítási és a klasszikus Lakeflow-folyamatok esetében a Databricks alapértelmezés szerint engedélyezi a Photon szolgáltatást. A számítás létrehozásakor vagy szerkesztésekor kapcsolja be vagy ki a Foton gyorsítás használata jelölőnégyzetet a Teljesítmény csoportban. Lásd: Foton-gyorsítás használata. Ha ezeket az erőforrásokat a Clusters API vagy a Jobs API használatával hozza létre, explicit módon engedélyeznie kell a Photont a következő beállítással runtime_enginePHOTON: . Ha a Pipelines API-t használja, állítsa a(z) photon értékét true értékre.

A Photon engedélyezését igénylő funkciók

A következő funkciók foton-engedélyezését igénylik:

Támogatott példánytípusok

A Photon számos példánytípust támogat az illesztőprogram és a feldolgozó csomópontokon. A Photon példánytípusok más ütemben, mint ugyanazon példánytípus a nem-Photon futtatás során, használnak DBU-kat. További információ a Photon-példányokról és a DBU-használatról: Azure Databricks díjszabási oldal.

Támogatott operátorok, kifejezések és adattípusok

A Photon az alábbi operátorokat, kifejezéseket és adattípusokat fedi le. Ha egy lekérdezés nem támogatott műveletet használ, a Photon transzparens módon visszaesik a Spark-futtatókörnyezetbe a végrehajtás adott részére.

Operátorok

  • Beolvasás (Parquet, Delta, CSV, JSON), Szűrés, Projekció
  • Hash összesítés/illesztés/keverés
  • Nested-Loop csatlakozás
  • Null-Aware illesztésgátló
  • Térbeli illesztés (broadcast- és shuffle-változatok, amelyek támogatják a(z) ST_Intersects, ST_Contains, ST_Covers, ST_Equals, ST_Touches, ST_Within és ST_DWithin elemeket)
  • Összegzés (Union), Kibővítés (Expand), Skáláris Lekérdezés (ScalarSubquery)
  • Delta/Parquet írási nyelő
  • Rendezés, TopK, Limit
  • Ablakfüggvény

Kifejezések

Ezek a kategóriák reprezentatívak, nem teljesek. Az egyes kategóriák funkcióira korlátozások vonatkozhatnak.

  • Összehasonlítás / logika
  • Számtani / Matematikai
  • Feltételes (HA, ESET stb.)
  • String
  • Tükrözés
  • Összesítések, beleértve a Min/Max/MinBy/MaxBy beágyazott típusok esetén
  • Dátum/időbélyeg/Dátumforma

Adattípusok

  • Bájt/Rövid/Int/Hosszú
  • logikai
  • Sztring/bináris
  • Decimális
  • Lebegőpontos/dupla
  • Dátum/időbélyeg
  • TimestampNTZ
  • Struktúra
  • Tömb
  • Térkép
  • Variant
  • Null
  • Geometria
  • Földrajz
  • Rendezett karakterlánc

Photon-használat monitorozása

A következő eszközökkel monitorozhatja, hogy a lekérdezések mekkora része fut a Photonen:

  • Spark felület (klasszikus általános célú és feladat-végrehajtási számítás): A Spark felületSQL/DataFrame lapján a Photon-operátorok narancssárga színnel jelennek meg a lekérdezés DAG-vizualizációjában. A standard Spark-operátorok kék színnel jelennek meg. Ez segít azonosítani, hogy a lekérdezés mely részei élvezik a Photon előnyeit, és amelyek visszaállnak a Spark-futtatókörnyezetre.
  • Lekérdezésprofil (SQL-raktárak és kiszolgáló nélküli számítás): A Végrehajtás részletei nézet a Photonben töltött tevékenységidő százalékos arányát mutatja. A lekérdezési terv megkülönbözteti a foton operátorokat (lila) a standard operátoroktól (szürke).

Ha azt tapasztalja, hogy egy lekérdezés nem a várt módon használja a Photont, ellenőrizze, hogy a lekérdezés nem támogatott műveleteket, UDF-eket vagy adatformátumokat használ-e, amelyek a Spark-futtatókörnyezetre való visszatérést okozzák.

Korlátozások

  • Ha a számítási feladat nem támogatott műveletet ér el, a számítási erőforrás transzparens módon átvált a Spark-futtatókörnyezetre a művelet hátralévő részében. A lekérdezés továbbra is helyes eredményeket eredményez.
  • A Photon nem támogatja az UDF-eket (felhasználó által definiált függvényeket), AZ RDD API-kat és az Adatkészlet API-kat.
  • Az állapotalapú streamelés nem támogatott. A Photon csak az állapot nélküli streamelést támogatja.
  • A Photon nem javítja az általában két másodperc alatt futó lekérdezéseket.