Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Photon ist das Azure Databricks-native vektorisierte Abfragemodul, das Ihre SQL-Workloads, DataFrame-API-Aufrufe, ETL-Pipelines und zustandslose Streamingworkloads beschleunigt. Photon verarbeitet Daten in Spaltenbatches und bietet erhebliche Leistungsverbesserungen gegenüber herkömmlicher zeilenbasierter Ausführung. Photon ist auch mit Apache Spark-APIs kompatibel, sodass es mit Ihrem vorhandenen Code ohne Änderungen funktioniert.
Funktionsweise von Photon
Bei unterstützten Vorgängen ersetzt Photon das JVM-basierte Spark SQL-Ausführungsmodul durch eine systemeigene C++-Laufzeit. Der Apache Spark-Abfrageoptimierer (Catalyst) plant weiterhin Ihre Abfrage, aber Photon übernimmt die Ausführungsebene, verarbeitet Daten in Spaltenbatches und nicht zeilenweise. Wenn Photon während der Abfrageausführung auf einen nicht unterstützten Vorgang stößt, fällt er für den Rest dieses Vorgangs transparent auf die Spark-Laufzeit zurück.
Photon verarbeitet Daten in Batches von Tausenden von Zeilen gleichzeitig und ermöglicht es modernen CPUs, SIMD-Anweisungen zu verwenden, die mehrere Werte pro CPU-Zyklus auswerten. Durch die Ausführung in nativem C++ statt in der JVM eliminiert Photon Garbage-Collection-Pausen, Verzögerungen beim JIT-Warm-up und Speicher-Overhead. Die Spaltenbatchverarbeitung ermöglicht cachefreundliche sequenzielle Lesevorgänge, wodurch die Speicherbandbreite und die CPU-Pipelineeffizienz maximiert werden.
Die Architektur von Photon verbessert die Leistung auf verschiedene Arten:
- Abfragebeschleunigung: Photon bietet bis zu 5x bessere Preis/Leistung für Daten- und Analyseworkloads im Vergleich zu anderen Cloud-Data Warehouses, wie durch branchenüblich gemessene TPC-DS Benchmarks.
- Optimierte Joins und Umverteilungen: Ersetzt Sort-Merge-Joins durch leistungsstarke Hash-Joins und verwendet eine neu konzipierte spaltenorientierte Umverteilung, um den Durchsatz bei umfangreichen Joins zu erhöhen.
-
Schreibleistung: Der native Parquet-Writer von Photon beschleunigt Schreibvorgänge in Delta Lake, Apache Iceberg und Parquet, einschließlich
UPDATE,DELETE,MERGE INTO,INSERTundCREATE TABLE AS SELECT-Vorgängen. Breite Tabellen mit Tausenden von Spalten sehen besonders wichtige Verbesserungen. - Scan-Effizienz: Implementiert Filter-Pushdown, Dictionary-Pruning und das Überspringen von Zeilengruppen, um die aus dem Speicher gelesene Datenmenge zu reduzieren, selbst bei der Verarbeitung vieler kleiner Dateien.
- Datenträgercache und Parallelität: Bietet einen schnelleren Wiederholten Zugriff über den Datenträgercache und verbessert den Durchsatz für gleichzeitige Abfragen in interaktiven BI-Workloads.
- Integration mit SQL- und Dataframes-API: Unterstützt SQL- und DataFrame-APIs über Python-, R-, Scala- und Java ohne erforderliche Codeänderungen.
Photon bietet den größten Vorteil für längere Abfragen, die große Datasets verarbeiten. Abfragen, die normalerweise in weniger als zwei Sekunden abgeschlossen werden, profitieren nicht nennenswert, da die Ausführungszeit hauptsächlich durch Planungs- und Scheduling-Overhead und nicht von der Datenverarbeitung bestimmt wird.
Integration in die Azure Databricks-Plattform
Photon beschleunigt Workloads auf der Azure Databricks Plattform. Sie müssen Ihren Code oder Ihre Abfragen nicht ändern, um Photon nutzen zu können.
- SQL-Analysen und BI: Photon ist die Standard-Engine für alle SQL Warehouses und treibt Dashboards, Ad-hoc-Abfragen und terminierte Berichte an.
- ETL und Data Engineering: Batchaufträge, die mit SQL oder der DataFrame-API erstellt wurden, profitieren von schnelleren Scans, Verknüpfungen, Aggregationen und Schreibvorgängen. Der native Parquet-Writer ist besonders effektiv für das Einlesen in Delta Lake, Apache Iceberg oder Parquet-Tabellen.
- Lakeflow Spark Declarative Pipelines: Das Aktivieren von Photon in Ihrer Pipelinekonfiguration hilft, die Ausführung von Lakeflow Spark Declarative Pipelines zu beschleunigen.
- Streaming: Photon unterstützt zustandsloses Streaming beim Schreiben in eine Delta- oder Parkettspüle. Unterstützte Quellen sind Delta, Parkett, CSV, JSON, Kafka und Kinesis. Zustandsbehaftetes Streaming wird nicht unterstützt.
- KI und maschinelles Lernen: Photon verbessert die Leistung für Spark SQL-, DataFrames-, Feature-Engineering- und GraphFrames-Vorgänge.
Photon-Aktivierung
Photon ist auf serverloser Rechenleistung, in SQL-Warehouses und in serverlosen Pipelines von Lakeflow Spark Declarative Pipelines immer aktiviert.
Für klassische Allzweck-Compute-Ressourcen, Compute für Jobs und klassische Lakeflow Spark Declarative Pipelines ist Photon standardmäßig aktiviert und kann beim Erstellen oder Bearbeiten von Compute über das Kontrollkästchen Use Photon Acceleration unter Performance aktiviert oder deaktiviert werden. Siehe "Photonbeschleunigung verwenden". Wenn Sie diese Ressourcen mithilfe der Clusters API oder Jobs API erstellen, müssen Sie Photon explizit aktivieren, indem Sie runtime_engine auf PHOTON festlegen. Wenn Sie die Pipelines-API verwenden, legen Sie photon auf true fest.
Features, die die Photon-Aktivierung erfordern
Für die folgenden Features ist die Photon-Aktivierung erforderlich:
- Prädiktive E/A für Lesen und Schreiben. Lesen Sie Was ist prädiktives I/O?.
- Dynamische Dateibereinigung in
MERGE-,UPDATE- undDELETE-Anweisungen. Siehe "Dynamisches Dateischneiden".
Unterstützte Instanztypen
Photon unterstützt eine Anzahl von Instanztypen auf den Treiber- und Workerknoten. Photon-Instanztypen verbrauchen DBUs mit einer anderen Rate als der gleiche Instanztyp mit der Nicht-Photon-Runtime. Weitere Informationen zu Photoninstanzen und DBU-Verbrauch finden Sie auf der Azure Databricks Preisseite.
Unterstütze Operatoren, Ausdrücke und Datentypen
Photon behandelt die folgenden Operatoren, Ausdrücke und Datentypen. Wenn eine Abfrage einen nicht unterstützten Vorgang verwendet, greift Photon transparent auf die Spark-Laufzeit für diesen Teil der Ausführung zurück.
Betriebspersonal
- Scan (Parquet, Delta, CSV, JSON), Filter, Project
- Hash- und Aggregat/Join/Shuffle
- Verschachtelter Schleifen-Join
- NULL-fähiger Anti-Join
- Spatial Join (Broadcast- und Shuffled-Varianten mit Unterstützung für
ST_Intersects,ST_Contains,ST_Covers,ST_Equals,ST_Touches,ST_WithinundST_DWithin) - Union, Expand, Skalar-Unterabfrage
- Delta/Parquet-Schreibsenke
- Sortieren, TopK, Grenzwert
- Fensterfunktion
Ausdrücke
Diese Kategorien sind repräsentativ, nicht erschöpfend. Einzelne Funktionen in jeder Kategorie können Einschränkungen aufweisen.
- Vergleich/Logik
- Arithmetik / Mathematik
- Bedingt (IF, CASE usw.)
- String
- Umwandlungen
- Aggregate, einschließlich Min/Max/MinBy/MaxBy bei geschachtelten Typen
- Datum/Uhrzeitstempel/DateFormat
Datentypen
- Byte/Short/Int/Long
- Boolescher Typ (Boolean)
- Zeichenfolge/Binär
- Dezimalzahl
- Float/Double
- Datum/Zeitstempel
- TimestampNTZ
- Struktur
- Array
- Landkarte
- Variante
- Null
- Geometrie
- Geografie
- Kollationierte Zeichenfolge
Überwachen der Photon-Verwendung
Mit den folgenden Tools können Sie überwachen, wie viel Ihrer Abfrage auf Photon ausgeführt wird:
- Spark UI (klassische Allzweck- und Job-Compute-Ressourcen): Im SQL/DataFrame-Tab der Spark UI erscheinen Photon-Operatoren in der Abfrage-DAG-Visualisierung orange. Standardmäßige Spark-Operatoren werden blau angezeigt. Auf diese Weise können Sie ermitteln, welche Teile Ihrer Abfrage von Photon profitieren und welche auf die Spark-Laufzeit zurückgreifen.
- Abfrageprofil (SQL Warehouses und serverlose Berechnung): In der Ansicht "Ausführungsdetails" wird der Prozentsatz der in Photon aufgewendeten Vorgangszeit angezeigt. Der Abfrageplan unterscheidet Photon-Operatoren (Lila) von Standardoperatoren (grau).
Wenn Sie feststellen, dass eine Abfrage nicht wie erwartet mit Photon ausgeführt wird, überprüfen Sie, ob die Abfrage nicht unterstützte Operationen, UDFs oder Datenformate verwendet, die einen Rückfall auf die Spark-Laufzeit verursachen.
Begrenzungen
- Wenn Ihre Workload auf einen nicht unterstützten Vorgang trifft, wechselt die Computeressource für den Rest dieses Vorgangs transparent zur Spark-Laufzeit. Ihre Abfrage erzeugt weiterhin korrekte Ergebnisse.
- Photon unterstützt KEINE UDFs (benutzerdefinierte Funktionen), RDD-APIs oder Dataset-APIs.
- Zustandsbehaftetes Streaming wird nicht unterstützt. Photon unterstützt nur zustandsloses Streaming.
- Photon verbessert Abfragen, die normalerweise in weniger als zwei Sekunden ausgeführt werden.