Vad är Photon?

Photon är den Azure Databricks inbyggda vektoriserade frågemotorn som påskyndar dina SQL-arbetsbelastningar, DataFrame API-anrop, ETL-pipelines och tillståndslösa strömningsarbetsbelastningar. Photon bearbetar data i kolumnbaserade batchar, vilket ger betydande prestandaförbättringar jämfört med traditionell radbaserad körning. Photon är också kompatibelt med Apache Spark-API:er, så det fungerar med din befintliga kod utan att det krävs några ändringar.

Så här fungerar Photon

För operationer som stöds ersätter Photon den JVM-baserade Spark SQL-exekveringsmotorn med en inbyggd C++-runtime. Apache Spark-frågeoptimeraren (Catalyst) planerar fortfarande din fråga, men Photon tar över vid körningslagret och bearbetar data i kolumnbaserade batchar i stället för rad för rad. När Photon stöter på en operation som inte stöds under frågekörning växlar den sömlöst över till Spark-körmiljön under återstoden av operationen.

Photon bearbetar data i batchar med tusentals rader i taget, vilket gör det möjligt för moderna processorer att använda SIMD-instruktioner som utvärderar flera värden per CPU-cykel. Genom att köra i inbyggd C++ i stället för JVM eliminerar Photon skräpinsamlingspauser, JIT-uppvärmningsfördröjningar och minnesomkostnader. Batchbearbetningen i columnar möjliggör cachevänliga sekventiella läsningar, vilket maximerar minnesbandbredden och processorpipelines effektivitet.

Photons arkitektur förbättrar prestandan på flera olika sätt:

  • Frågeacceleration: Photon ger upp till 5 x bättre pris/prestanda för data- och analysarbetsbelastningar jämfört med andra molndatalager, mätt enligt branschstandard TPC-DS riktmärken.
  • Optimerade sammanfogningar och omfördelningar: Ersätter sorteringssammanfogningar med högpresterande hash-sammanfogningar och använder en omarbetad kolumnbaserad omfördelning för att öka genomströmningen för storskaliga sammanfogningar.
  • Skrivprestanda: Den Photon-integrerade Parquet-skrivaren snabbar upp skrivningar till Delta Lake, Apache Iceberg och Parquet, inklusive UPDATE, DELETE, MERGE INTO, INSERT och CREATE TABLE AS SELECT-åtgärder. Breda tabeller med tusentals kolumner ser särskilt betydande förbättringar.
  • Skanningseffektivitet: Implementerar filternedtryckning, ordbokspruning och överhoppning av radgrupper för att minska mängden data som läses från lagringen, även vid hantering av många små filer.
  • Diskcache och samtidighet: Ger snabbare upprepad åtkomst via diskcacheminnet och förbättrar dataflödet för samtidiga frågor i interaktiva BI-arbetsbelastningar.
  • Integration med SQL- och Dataframes API: Stöder SQL- och DataFrame-API:er i Python, R, Scala och Java utan kodändringar.

Photon ger den största fördelen för frågor som körs längre och som bearbetar stora datamängder. Frågor som normalt tar mindre än två sekunder att köra förbättras inte nämnvärt, eftersom körtiden domineras av overhead för planering och schemaläggning snarare än av bearbetning av data.

Integrering med Azure Databricks-plattformen

Photon påskyndar arbetsbelastningar i Azure Databricks plattform. Du behöver inte ändra din kod eller dina frågor för att dra nytta av Photon.

  • SQL-analys och BI: Photon är standardmotorn för alla SQL-datalager och driver instrumentpaneler, ad hoc-frågor och schemalagda rapporter.
  • ETL och datateknik: Batch-jobb som skapats med SQL eller DataFrame API drar nytta av snabbare genomsökningar, kopplingar, sammansättningar och skrivningar. Den inbyggda Parquet-skrivaren är särskilt effektiv för inläsning till Delta Lake-, Apache Iceberg- eller Parquet-tabeller.
  • Lakeflow Spark Declarative Pipelines: Att aktivera Photon i konfigurationen av din pipeline bidrar till att snabba upp körningen av Lakeflow Spark Declarative Pipelines.
  • Direktuppspelning: Photon stöder tillståndslös strömning när du skriver till en Delta- eller Parquet-mottagare. Källor som stöds är Delta, Parquet, CSV, JSON, Kafka och Kinesis. Tillståndsfull strömmning stöds inte.
  • AI och maskininlärning: Photon förbättrar prestanda för Spark SQL, DataFrames, funktionsutveckling och GraphFrames-åtgärder.

Aktivering av foton

Photon är alltid aktiverat för serverlös databehandling, SQL-datalager och serverlösa deklarativa Lakeflow Spark-pipelines.

För klassiska allround-beräkningsresurser, jobbberäkningsresurser och klassiska Lakeflow Spark Declarative Pipelines-pipelines är Photon aktiverat som standard och kan aktiveras eller inaktiveras med kryssrutan Använd Photon-acceleration under Prestanda när du skapar eller redigerar beräkningsresurser. Se Använd Photon-acceleration. Om du skapar dessa resurser med kluster-API :et eller jobb-API:et måste du uttryckligen aktivera Photon genom att ange runtime_engine till PHOTON. Om du använder Pipelines-API:et anger du photon till true.

Funktioner som kräver photon-aktivering

Följande funktioner kräver photon-aktivering:

Instanstyper som stöds

Photon stöder ett antal instanstyper på drivrutins- och arbetsnoderna. Photon-instanstyper använder DBU:er med en annan hastighet än samma instanstyper som kör en runtime som inte är Photon. Mer information om Photon-instanser och DBU-förbrukning finns på prissidan Azure Databricks.

Operatorer, uttryck och datatyper som stöds

Foton omfattar följande operatorer, uttryck och datatyper. När en fråga använder en operation som inte stöds växlar Photon transparent över till Spark-körtiden för den delen av exekveringen.

Operatörer

  • Genomsökning (Parquet, Delta, CSV, JSON), Filter, Project
  • Hash-aggregering/koppling/blandning
  • Nested-Loop Gå med i
  • Null-medveten anti-anslutning (Null-Aware Anti Join)
  • Spatial Join (sändnings- och shuffle-varianter som stöder ST_Intersects, ST_Contains, ST_Covers, ST_Equals, ST_Touches, ST_Within och ST_DWithin)
  • Union, Expand, ScalarSubquery
  • Delta/Parquet skrivmottagare
  • Sortera, TopK, Gräns
  • Fönsterfunktion

Uttryck

Dessa kategorier är representativa, inte uttömmande. Enskilda funktioner i varje kategori kan ha begränsningar.

  • Jämförelse/logik
  • Aritmetik/matematik
  • Villkorsstyrd (IF, CASE osv.)
  • String
  • Sändningar
  • Aggregeringar, inklusive Min/Max/MinBy/MaxBy för kapslade typer
  • Datum/tidsstämpel/Datumformat

Datatyper

  • Byte/Kort/Heltal/Långt
  • Booleskt
  • Sträng/binär
  • Decimal
  • Flyttal/dubbel
  • Datum/tidsstämpel
  • TimestampNTZ
  • Struct-datatyp
  • Array
  • Karta
  • Variant
  • Null
  • geometri
  • Geografi
  • Sorterad sträng

Övervaka användningen av Photon

Du kan övervaka hur mycket av frågan som körs på Photon med hjälp av följande verktyg:

  • Spark-gränssnittet (klassisk allround- och jobbberäkning): På fliken SQL/DataFrame i Spark-gränssnittet visas Photon-operatorer i orange i DAG-visualiseringen för frågan. Standard Spark-operatorer visas i blått. Detta hjälper dig att identifiera vilka delar av frågan som har nytta av Photon och vilka som återgår till Spark-körningen.
  • Frågeprofil (SQL-datalager och serverlös databehandling): Vyn Körningsdetaljer visar hur stor andel av uppgiftstiden som tillbringas i Photon. Frågeplanen skiljer fotooperatorer (lila) från standardoperatorer (grå).

Om du märker att en fråga inte använder Photon som förväntat kontrollerar du om frågan använder åtgärder som inte stöds, UDF:er eller dataformat som orsakar en återställning till Spark-körningen.

Begränsningar

  • Om din arbetsbelastning stöter på en operation som inte stöds, växlar beräkningsresursen automatiskt till Spark-körningen under återstoden av operationen. Frågan ger fortfarande rätt resultat.
  • Photon stöder inte UDF:er (användardefinierade funktioner), RDD-API:er eller API:er för datauppsättningar.
  • Tillståndsfull strömmning stöds inte. Photon stöder tillståndslös direktuppspelning.
  • Photon förbättrar inte frågor som normalt tar mindre än två sekunder att köra.