Direkt zum Hauptinhalt
Ankündigungen

Einführung in Apache Spark 4.2

Jetzt in Databricks Runtime 19 Beta verfügbar

von Wenchen Fan, Andreas Neumann, Serge Rielau, Szehon Ho, Gengliang Wang, Linhong Liu, Hyukjin Kwon, Jerry Peng, DB Tsai, Xiao Li und Reynold Xin

  • Vertrauenswürdigen Kontext für Analytics und AI definieren: Metrik-Views erstellen kontrollierte Geschäftsdefinitionen, während Vektorsuche, geospatiale Typen und reichhaltigere SQL-Primitiven AI-native Analytics in Spark bringen.
  • Spark aus mehr Anwendungen erreichen: Spark Connect, Arrow-first Python-Ausführung, verbesserte PySpark-Kompatibilität und Python-Datenquellen erleichtern die Nutzung von Spark durch Dienste, Tools und AI-Agenten.
  • Daten aktuell und produktionsbereit halten: Auto CDC, Data Source V2, CHANGES-Abfragen, Echtzeitmodus und Plattformverbesserungen vereinfachen die zuverlässige Verarbeitung von sich kontinuierlich ändernden Daten.

Einführung

Apache Spark 4.2 integriert noch mehr des modernen Daten- und KI-Stacks direkt in die Engine. Aufbauend auf Spark 4.x fügt dieses Release verwaltete Metriken, Vektor- und Top-K-Primitiven, einen stärker auf Arrow ausgerichteten Python-Pfad, erstklassiges Change Data Capture sowie stabilere Streaming- und Betriebsgrundlagen hinzu.

Dadurch wird Spark auf beiden Seiten einer KI-Anwendung noch nützlicher. Es verbessert die Qualität und Aktualität der Daten, die KI-Agenten bereitgestellt werden, und erleichtert es Anwendungen und Agenten, Spark als Remote-Ausführungsdienst aufzurufen. Der KI-Ansatz ist konkret: vertrauenswürdige Semantik, native Retrieval-Primitiven, aktuelle Änderungsdaten und offene Schnittstellen für Berechnungen auf Spark-Niveau.

Spark 4.2 lässt sich anhand von vier Vorteilen beschreiben:

  • Die Wahrheit einmal definieren: Metrik-Ansichten bringen verwaltete Geschäftsmetriken in Spark, sodass SQL, BI-Tools, Anwendungen und KI-Systeme dieselben Definitionen nutzen können.
  • Spark von überall aus erreichen: Verbesserungen an Spark Connect, PySpark, Arrow und Python-Datenquellen erleichtern den Aufruf von Spark aus Diensten und Python-Ökosystemen.
  • KI-native Analysen in SQL ausführen: Vektorfunktionen, NEAREST BY, Sketches, Ranking und Geodaten-Typen bringen mehr analytische Bausteine direkt in Spark SQL.
  • Sich verändernde Daten sicher bewegen: Auto CDC, das CHANGES-Interface, Data Source V2 und Echtzeit-Streaming erleichtern die korrekte Verarbeitung von sich kontinuierlich ändernden Daten.

Zusammen helfen diese Änderungen Unternehmen dabei, eine einzige offene Engine zu nutzen, um Daten vorzubereiten, geschäftliche Bedeutungen zu definieren, relevanten Kontext abzurufen und Analyse- sowie KI-Anwendungen auf dem neuesten Stand zu halten.

Metriken und semantische Modellierung: Die Wahrheit einmal definieren

Spark 4.2 führt Metrik-Ansichten ein und bringt damit eine native semantische Schicht in Spark SQL. Teams können Geschäftsmetriken einmal definieren und sie konsistent über Dashboards, Berichte, Anwendungen und KI-Tools hinweg nutzen.

Dies ist wichtig, da viele wichtige Metriken nicht ohne Weiteres addierbar sind. Verhältnisse, eindeutige Zählungen, Retention und ähnliche Kennzahlen können zu falschen Ergebnissen führen, wenn jeder Nutzer die Formel auf einer anderen Granularitätsebene neu schreibt. Metrik-Ansichten machen Dimensionen und Kennzahlen zu First-Class-Objekten, die Spark versteht, sodass die Engine die beabsichtigte Aggregationssemantik beibehalten kann.

Sobald eine Metrik-Ansicht definiert ist, können Benutzer dieselben verwalteten Kennzahlen nach verschiedenen Dimensionen abfragen:

Für KI-Anwendungen ist dies besonders wichtig. Ein Agent sollte den Umsatz nicht anders berechnen als ein Dashboard oder eine andere Antwort liefern, wenn ein Benutzer die gewünschte Gruppierung ändert. Eine verwaltete Metrik-Ansicht bietet SQL, BI und KI eine einzige Source of Truth, bei der Spark-Analysen, Katalogauflösung und Berechtigungen konsistent angewendet werden.

Spark Connect und PySpark: Spark von überall aus erreichen

Spark als Service-API

Spark Connect trennt den Client über ein auf gRPC und Arrow basierendes Protokoll vom Spark-Server. Ein Client erstellt einen logischen Plan, der Server analysiert und führt ihn aus, und die Ergebnisse werden als Arrow-Batches zurückgegeben. Der Client benötigt keine vollständige Spark-Runtime oder eine lokale JVM.

Dadurch lässt sich Spark einfacher in Notebooks, Dienste, Entwicklertools und KI-Anwendungen einbetten. Ein Agent oder eine Anwendung kann Spark aus der eigenen Runtime aufrufen, während Spark die Analyse, Optimierung, Ausführung und Governance auf dem Server belässt.

Spark 4.2 schließt die Kompatibilitätslücke zu Spark Classic weiter. Zu den Verbesserungen gehören eine bessere RDD-API-Kompatibilität, DataFrame-Eingaben für spark.read.* und SparkSession.emptyDataFrame, verbesserte Debugging-Möglichkeiten, Fehlerfortpflanzung, Statusberichte und Unterstützung für den YARN-Cluster-Modus. Zusammen machen diese Änderungen PySpark und Spark Connect schneller, kompatibler und einfacher im großen Maßstab und remote zu betreiben.

Ein stärker auf Arrow ausgerichteter Python-Pfad

Python bleibt eine der wichtigsten Methoden, mit denen Benutzer Daten- und KI-Workloads mit Spark erstellen. In Spark 4.2 ist die Arrow-optimierte Ausführung von Python-UDFs standardmäßig aktiviert, sodass vorhandene UDFs den schnelleren spaltenbasierten Pfad ohne Code-Umschreibung nutzen können. Die Unterstützung von Pandas 3 erleichtert zudem die Aktualisierung von Python-Umgebungen parallel zu Spark.

Für Code, der mehr Kontrolle erfordert, behalten Arrow-UDFs die Daten in PyArrow-Arrays und vermeiden eine unnötige Pandas-Konvertierung. Spark erweitert zudem das Profiling und Debugging für die Python-Ausführung, einschließlich Zeit- und Speicher-Profiling für Python-Datenquellen, verbesserter Worker-Diagnosen und einer Protokollierung, die als Daten abgefragt werden kann.

Spark 4.2 verbessert zudem die Interoperabilität durch das Arrow C Data Interface und das PyCapsule-Protokoll. Wenn beide Seiten dies unterstützen, können Spark-DataFrames ohne Kopieren oder Serialisieren der zugrunde liegenden Daten in Arrow-native Tools wie Polars oder DuckDB verschoben werden. Dies reduziert den Integrationsaufwand zwischen der Verarbeitung auf Spark-Niveau und dem breiteren Python- und KI-Ökosystem.

Python-Datenquellen reduzieren Reibungsverluste bei der Integration weiter. Teams können Batch- oder Streaming-Reader und -Writer in Python erstellen, sie einmal registrieren und über die standardmäßige Spark-Datenquellenschnittstelle verwenden. In 4.2 macht Profiling diese Connectors einfacher abzustimmen und zu betreiben, anstatt sie als Blackboxen zu behandeln.

Spark SQL: KI-native Analysen in der Engine

Vektor-Scoring und Top-K-Retrieval

Spark 4.2 fügt neue SQL-Primitiven für die Vektor-Ähnlichkeitssuche, das Ranking und die Zeitreihenanalyse hinzu. Das Release führt Vektordistanz- und -ähnlichkeitsfunktionen, Vektornormalisierung, Vektoraggregation und NEAREST BY ein, einen Top-K-Ranking-Join für distanzbasiertes Matching. Diese Primitiven ermöglichen Retrieval, Empfehlungen, Entity Resolution und Kandidatengenerierung im großen Maßstab.

Native Geodaten-Analysen

Integrierte GEOMETRY- und GEOGRAPHY-Typen sowie ST_*-Funktionen ermöglichen standortbezogene Analysen ohne externe räumliche Erweiterungen. Spark 4.2 fügt außerdem Unterstützung für Parquet, WKT/WKB, SRID-Erhaltung und Python-Konvertierung hinzu.

Vollständig qualifizierte integrierte Funktionen und temporäre Ansichten

Mit Spark 4.2 können Sie von Spark bereitgestellte Funktionen eindeutig aufrufen, indem Sie sie mit SYSTEM.BUILTIN qualifizieren. Dem Beispiel von Sitzungsvariablen folgend können Sie temporäre Ansichten auch vollständig mit SYSTEM.SESSION qualifizieren. Dies ist nützlich, um Unklarheiten gegenüber benutzerdefinierten Funktionen oder persistenten Relationen zu vermeiden und Injections zu verhindern.

SQL-Suchpfad

Spark 4.2 fügt Unterstützung für den SQL-Suchpfad mit SET PATH hinzu, was die Auflösung von Tabellen, Funktionen und Variablen über Namespaces hinweg sowie den Zugriff auf Objektbibliotheken vereinfacht, indem einfach Schemata zum Pfad hinzugefügt werden.

Spark speichert den SQL-Pfad in Ansichten und SQL-Funktionen für eine vorhersehbare Namensauflösung.

Ab Spark 4.2 können SQL-Skripte Cursor mit DECLARE, OPEN, FETCH und CLOSE steuern. Dies ermöglicht eine bessere Kontrolle über die zeilenweise Verarbeitung von Ergebnismengen, wofür in der Vergangenheit SQL verlassen werden musste, um DataFrames zu verwenden.

Spark SQL fügt außerdem Tuple-Sketches, time_bucket für die Zeitreihenanalyse, eine breitere Unterstützung für den Typ TIME über verschiedene Dateiformate hinweg, QUALIFY zum Filtern von Fensterergebnissen, Top-K max_by und min_by sowie Unterstützung für IGNORE NULLS und RESPECT NULLS bei gängigen Aggregationsfunktionen hinzu.

Zusammen machen diese Ergänzungen Spark SQL ausdrucksstärker für moderne analytische Anwendungen.

Spark Declarative Pipelines und Auto CDC: Sich verändernde Daten sicher bewegen

Spark 4.2 führt die Auto-CDC-Unterstützung in Spark Declarative Pipelines (SDP) ein und bringt damit eine erstklassige SCD (Slow Changing Dimensions) Typ-1-Verarbeitung in Spark. Vor Auto CDC erforderte das Konsumieren eines Change-Feeds und dessen Anwendung auf eine Zieltabelle eine selbst geschriebene Merge-Logik, die aufgrund der Handhabung von Löschungen und nicht sequenziellen Änderungsereignissen leicht komplex und fehleranfällig werden konnte. Mit Auto CDC können Benutzer einfach konfigurieren, wie CDC-Ereignisse eine Zieltabelle aktualisieren sollen, und Spark die Komplexität überlassen.

Auto CDC bietet eine Python-API zur Anwendung von CDC-Änderungen auf eine SCD-Typ-1-Zieltabelle. Sie ist für gängige Ingestion- und Replikations-Workloads konzipiert, bei denen die neueste Version jedes Datensatzes zuverlässig gepflegt werden muss, wie z. B. Kundenprofile, Produktkataloge, Kontodatensätze und betriebliche Referenzdaten.

Beispielsweise kann ein Auto-CDC-Flow jetzt deklarativ ausgedrückt werden:

Neben Auto CDC erhalten Spark Declarative Pipelines auch wichtige Plattform-Härtungen, darunter eine sicherere serverseitige Verarbeitung für Eager Analysis und strukturierte Identifikatoren für Flows. Zusammen machen diese Änderungen die Entwicklung deklarativer Pipelines zuverlässiger und bieten Spark eine Grundlage für übergeordnete Data-Engineering-Muster.

Real-Time Mode in Structured Streaming: Aktuellere operative Daten

Der Real-Time Mode (RTM) in Structured Streaming ermöglicht es Streaming-Abfragen, Daten mit einer End-to-End-Latenz im Millisekundenbereich zu verarbeiten. Dies hat Spark geholfen, völlig neue Arten von Anwendungsfällen zu erschließen, und wird zur Grundlage für operative Datenanwendungen wie Betrugserkennung, Personalisierung, Observability und Echtzeit-Feature-Engineering.

In Spark 4.2 haben wir RTM auf PySpark ausgeweitet: Sie können jetzt zustandslose Streaming-Abfragen (ohne Python-UDFs) im Real-Time Mode ausführen. Python ist aufgrund seiner Benutzerfreundlichkeit bei Data Scientists und Engineers sehr beliebt, und dies macht die latenzarme Verarbeitung von RTM einem viel breiteren Publikum zugänglich.

Mit Blick auf das kommende Release von Spark 4.x bringen wir zustandsbehafteten Support für RTM – und die Arbeit daran läuft bereits. Diese Bemühungen werden in SPARK-54699 mit drei Hauptkomponenten nachverfolgt:

  • Ein neuer Streaming-Shuffle (SPARK-56664), der Daten von vorgelagerten Stages an nachgelagerte Stages weiterleitet, sobald sie bereit sind, anstatt auf den Abschluss einer Stage zu warten
  • Gleichzeitiges Stage-Scheduling (SPARK-57000), wodurch mehrere Stages gleichzeitig ausgeführt werden können
  • Unterstützung für zustandsbehaftete Operatoren (SPARK-57228), beginnend mit transformWithState

Über die zustandsbehaftete Unterstützung hinaus arbeiten wir auch daran, Python-UDFs (SPARK-57237) in RTM zu ermöglichen.

Bleiben Sie dran – wir freuen uns auf Ihr Feedback und Ihre Beiträge!

Data Source V2: Eine einheitliche Oberfläche für sich entwickelnde Datenquellen

Spark 4.2 markiert einen weiteren wichtigen Schritt nach vorn für Data Source V2. DSv2 wird zur Standardgrundlage für Connectors, die Lese- und Schreibvorgänge, Operationen auf Zeilenebene, Schema-Evolution, Change Data, Operationsmetriken und Transaktionen über Spark bereitstellen.

CDC in DSv2

Spark 4.2 fügt DSv2 erstklassige Unterstützung für Change Data Capture hinzu. Connectors können Change Streams über eine Standard-API bereitstellen, und Benutzer können diese mit der neuen SQL-Klausel CHANGES, DataFrame-APIs und PySpark-Bindings abfragen. Spark übernimmt auch die gängige Nachbearbeitung in der Engine – das Verwerfen von Copy-on-Write-Überträgen, das Erkennen von Aktualisierungen und das Berechnen von Nettoänderungen pro Zeile. Dieselbe Abfrage verhält sich bei jedem DSv2-Connector, der CDC unterstützt, konsistent.

Operationen auf Zeilenebene, Schema-Evolution und Transaktionen

Spark 4.2 verbessert die Unterstützung für DML-Operationen auf Zeilenebene in Data Source V2 (DSv2)-Connectors weiter. MERGE INTO erhält zusätzliche Leistungsverbesserungen, einschließlich Whole-Stage Code Generation, zusammen mit weiteren Verbesserungen der in Spark 4.1 eingeführten Funktionen zur Schema-Evolution.

Die Schema-Evolution wird jetzt auch für INSERT INTO-Operationen unterstützt, sowohl für die namensbasierte als auch für die positionsbasierte Spaltenauflösung, was den Aufwand beim Schreiben in sich verändernde Tabellen verringert. Darüber hinaus sind jetzt Operationszusammenfassungen für UPDATE und DELETE verfügbar, die die in Spark 4.1 hinzugefügten MERGE INTO-Zusammenfassungen ergänzen. Die Metriken für MERGE INTO wurden ebenfalls erweitert und verfeinert.

Spark 4.2 führt zusätzliche Bausteine für produktionsreife DSv2-Connectors und Lakehouse-Tabellenformate ein. Zu den wichtigsten Neuerungen gehören die Grundlagen einer Transaktions-API, eine verbesserte Filterung von Partitionsstatistiken, Optimierungen bei Storage-Partitioned Joins sowie eine engere Abstimmung zwischen DSv1- und DSv2-Befehlen und -Verhalten. Zusammen machen diese Verbesserungen DSv2 zu einer vollständigeren Plattform für die Implementierung von Lakehouse-Connectors, transaktionalen Tabellenformaten und anderen großen Datensystemen.

Bemerkenswerte Verbesserungen und Danksagungen

Spark 4.2 enthält mehrere Plattformverbesserungen, die den Betrieb, das Debugging, die Sicherheit und die Skalierung von Spark erleichtern. Die Spark Web UI erhält eine umfassende Modernisierung mit Bootstrap 5, Dark Mode, besserer Visualisierung von SQL-Plänen, Verbesserungen der Query-Timeline und serverseitiger Paginierung. Die Kubernetes-Unterstützung wird durch heterogenes Executor-Management, stabile Resource-Manager-APIs und einen reduzierten Control-Plane-Overhead verbessert. Spark 4.2 bietet außerdem Unterstützung für JDK 25, verbessert die Websicherheit, skaliert den Spark History Server und aktualisiert wichtige Abhängigkeiten wie Scala, Parquet, ORC, Arrow, Netty und Hadoop.

Spark 4.2 spiegelt die Stärke der Apache Spark-Community wider, mit mehr als 1.900 Commits von über 260 Mitwirkenden. Wir danken allen, die Code, Reviews, Tests, Dokumentation und Feedback beigesteuert haben, um dieses Release zu ermöglichen.

image2.png

Erste Schritte mit Spark 4.2

Laden Sie Apache Spark 4.2 von spark.apache.org/downloads herunter und lesen Sie die vollständigen Apache Spark 4.2 Release Notes für eine komplette Liste aller Änderungen. Apache Spark 4.2 wird auch in der Databricks Runtime 19 Beta verfügbar sein.

image1.png

(Dieser Blogbeitrag wurde mit KI-gestützten Tools übersetzt.) Originalbeitrag

Erhalten Sie die neuesten Beiträge in Ihrem Posteingang

Abonnieren Sie unseren Blog und erhalten Sie die neuesten Beiträge direkt in Ihren Posteingang.