Wat is Photon?

Photon is de systeemeigen, gevectoriseerde query-engine van Azure Databricks die uw SQL-workloads, DataFrame-API-aanroepen, ETL-pijplijnen en streamingworkloads zonder status versnelt. Photon verwerkt gegevens in kolombatches en levert aanzienlijke prestatieverbeteringen ten opzichte van traditionele uitvoering op basis van rijen. Photon is ook compatibel met Apache Spark-API's, zodat deze werkt met uw bestaande code zonder dat er wijzigingen nodig zijn.

Hoe Photon werkt

Voor ondersteunde bewerkingen vervangt Photon de op JVM gebaseerde Spark SQL-uitvoeringsengine door een systeemeigen C++-runtime. De Apache Spark-query-optimizer (Catalyst) plant uw query nog steeds, maar Photon neemt het op de uitvoeringslaag over en verwerkt gegevens in kolomgebaseerde batches in plaats van rij voor rij. Wanneer Photon een niet-ondersteunde bewerking tegenkomt tijdens het uitvoeren van query's, valt deze transparant terug naar de Spark-runtime voor de rest van die bewerking.

Photon verwerkt gegevens in batches van duizenden rijen tegelijk, waardoor moderne CPU's SIMD-instructies kunnen gebruiken die meerdere waarden per CPU-cyclus evalueren. Doordat Photon in systeemeigen C++ wordt uitgevoerd in plaats van op de JVM, elimineert het garbagecollectionpauzes, JIT-opwarmvertragingen en geheugenoverhead. De kolom batchverwerking maakt cachevriendelijke sequentiële leesbewerkingen mogelijk, waardoor de geheugenbandbreedte en de efficiëntie van de CPU-pijplijn worden gemaximaliseerd.

De architectuur van Photon verbetert de prestaties op verschillende manieren:

  • Versnelling van query's: Photon biedt tot 5x betere prijs-prestatieverhouding voor data- en analyseworkloads dan andere cloud-datawarehouses, gemeten aan de hand van de standaard TPC-DS-benchmarks uit de branche.
  • Geoptimaliseerde joins en shuffles: vervangt sort-merge-joins door snelle hash-joins en maakt gebruik van een opnieuw ontworpen kolomgerichte shuffle om de doorvoer bij grootschalige joins te verhogen.
  • Schrijfprestaties: de oorspronkelijke Parquet-schrijver van Photon versnelt Delta Lake, Apache Iceberg en Parquet-schrijfbewerkingen, waaronder UPDATE, DELETE, MERGE INTO, en INSERTCREATE TABLE AS SELECT bewerkingen. Brede tabellen met duizenden kolommen zien met name belangrijke verbeteringen.
  • Scanefficiëntie: Implementeert filter-pushdown, dictionary pruning en het overslaan van row groups om de hoeveelheid gegevens die uit de opslag wordt gelezen te verminderen, zelfs bij het verwerken van veel kleine bestanden.
  • Schijfcache en gelijktijdigheid: biedt snellere herhaaltoegang via de schijfcache en verbetert de doorvoer voor gelijktijdige query's in interactieve BI-workloads.
  • Integratie met SQL- en Dataframes-API: ondersteunt SQL- en DataFrame-API's in Python, R, Scala en Java zonder dat er codewijzigingen nodig zijn.

Photon biedt het grootste voordeel voor langer uitgevoerde query's die grote gegevenssets verwerken. Query's die normaal gesproken binnen twee seconden worden voltooid, zien geen zinvolle verbetering omdat de uitvoeringstijd wordt gedomineerd door planning en planning van overhead in plaats van gegevensverwerking.

Integratie met het Azure Databricks-platform

Photon versnelt workloads in het Azure Databricks platform. U hoeft uw code of query's niet te wijzigen om te profiteren van Photon.

  • SQL-analyse en BI: Photon is de standaardengine voor alle SQL-magazijnen, het inschakelen van dashboards, ad-hocquery's en geplande rapporten.
  • ETL en data engineering: Batch-taken die zijn gebouwd met SQL of de DataFrame-API profiteren van snellere scans, joins, aggregaties en schrijfbewerkingen. De systeemeigen Parquet-schrijver is met name effectief voor opname in Delta Lake-, Apache Iceberg- of Parquet-tabellen.
  • Lakeflow Spark-declaratieve pijplijnen: Het inschakelen van Photon in uw pijplijnconfiguratie helpt de uitvoering van declaratieve Pijplijnen van Lakeflow Spark te versnellen.
  • Streaming: Photon ondersteunt staatloze streaming bij het schrijven naar een Delta- of Parquet-sink. Ondersteunde bronnen zijn Delta, Parquet, CSV, JSON, Kafka en Kinesis. Stateful streaming wordt niet ondersteund.
  • AI en machine learning: Photon verbetert de prestaties voor Spark SQL-, DataFrames-, functie-engineering- en GraphFrames-bewerkingen.

Photon-inschakeling

Photon is altijd ingeschakeld voor serverloze berekeningen, SQL-magazijnen en serverloze Lakeflow Spark-declaratieve pijplijnen.

Voor klassieke algemene compute, jobcompute en klassieke Lakeflow Spark Declarative Pipelines-pijplijnen is Photon standaard ingeschakeld en kan het met het selectievakje Photon-versnelling gebruiken onder Prestaties in- of uitgeschakeld worden wanneer u compute maakt of bewerkt. Zie Fotonversnelling gebruiken. Als u deze resources maakt met behulp van de Clusters API of Jobs API, moet u Photon expliciet inschakelen door runtime_engine in te stellen op PHOTON. Als u de Pipelines-API gebruikt, stelt u photon in op true.

Functies waarvoor Photon-activering is vereist

Voor de volgende functies is photon-activering vereist:

Ondersteunde exemplaartypen

Photon ondersteunt een aantal exemplaartypen op de stuur- en werkknooppunten. Typen Foton-exemplaren verbruiken DBU's met een andere snelheid dan hetzelfde exemplaartype waarop de niet-Photon-runtime wordt uitgevoerd. Zie de pagina Azure Databricks prijzen voor meer informatie over Photon-exemplaren en DBU-verbruik.

Ondersteunde operators, expressies en gegevenstypen

Photon behandelt de volgende operators, expressies en gegevenstypen. Wanneer een query gebruikmaakt van een niet-ondersteunde bewerking, valt Photon transparant terug naar de Spark-runtime voor dat deel van de uitvoering.

Exploitanten

  • Scannen (Parquet, Delta, CSV, JSON), Filter, Project
  • Hash-aggregatie/koppeling/herschikking
  • Nested-Loop deelnemen
  • Null-Aware anti-join
  • Spatial Join (broadcast- en shuffle-varianten met ondersteuning voor ST_Intersects, ST_Contains, ST_Covers, ST_Equals, ST_Touches, ST_Within en ST_DWithin)
  • Unie, Uitbreiden, ScalaireSubquery
  • Delta/Parquet-wegschrijfbron
  • Sorteren, TopK, Limiet
  • Vensterfunctie

Uitdrukkingen

Deze categorieën zijn representatief, niet volledig. Afzonderlijke functies binnen elke categorie kunnen beperkingen hebben.

  • Vergelijking/logica
  • Rekenkundige/wiskunde
  • Voorwaardelijk (ALS, CASE, enzovoort)
  • String
  • Werpt
  • Aggregatiefuncties, waaronder Min/Max/MinBy/MaxBy voor geneste typen
  • Date/Timestamp/DateFormat

Gegevenstypen

  • Byte/Short/Int/Long
  • Booleaans
  • Tekenreeks/binair
  • Decimaal
  • Float/Double
  • Datum/tijdstempel
  • TimestampNTZ
  • Structuur
  • Array
  • Kaart
  • Variant
  • Null
  • geometrie
  • Geografie
  • Gesorteerde tekenreeks

Fotongebruik bewaken

U kunt controleren hoeveel van uw query wordt uitgevoerd op Photon met behulp van de volgende hulpprogramma's:

  • Spark UI (klassieke berekening voor alle doeleinden en taken): Op het tabblad SQL/DataFrame van de Spark-gebruikersinterface worden Photon-operators in oranje weergegeven in de QUERY DAG-visualisatie. Standaard Spark-operators worden blauw weergegeven. Hiermee kunt u bepalen welke onderdelen van uw query profiteren van Photon en welke terugvallen op de Spark-runtime.
  • Queryprofiel (SQL Warehouses en serverloze berekening): In de weergave Uitvoeringsdetails wordt het percentage taaktijd weergegeven dat in Photon is besteed. Het queryplan onderscheidt Photon-operators (paars) van standaardoperators (grijs).

Als u merkt dat een query niet gebruikmaakt van Photon zoals verwacht, controleert u of voor de query niet-ondersteunde bewerkingen, UDF's of gegevensindelingen worden gebruikt die een terugval naar de Spark-runtime veroorzaken.

Beperkingen

  • Als uw workload een niet-ondersteunde bewerking tegenkomt, schakelt de rekenresource automatisch over naar de Spark-runtime voor het resterende deel van die bewerking. Uw query produceert nog steeds de juiste resultaten.
  • Photon biedt geen ondersteuning voor UDF's (door de gebruiker gedefinieerde functies), RDD-API's of gegevensset-API's.
  • Stateful streaming wordt niet ondersteund. Photon ondersteunt alleen stateless streaming.
  • Photon verbetert geen query's die normaal gesproken binnen twee seconden worden uitgevoerd.