Lernen  /  Neuigkeiten

Neu in Apache Spark 4.3: Echtzeit mit Zustand, SCD Type 2 und ASOF JOIN

Spark 4.3 ist das erste Release im neuen Quartalsrhythmus, und es ist umfangreich: Streaming mit Zustand in etwa einer Zehntelsekunde, Tabellen mit Historie ohne handgeschriebenes MERGE und ein schnellerer Weg für kleine Daten. Wir haben es installiert und die wichtigsten Neuerungen ausprobiert.

Neuigkeiten8 Min. LesezeitAktualisiert am 9 November 2026
PythonSQLDatabricksNeuigkeiten
Alle Leitfäden und Spickzettel

Apache Spark 4.3.0 erschien am 30. Oktober 2026, nur dreieinhalb Monate nach Spark 4.2. Das ist kein Zufall: Ab diesem Release veröffentlicht Spark jedes Quartal ein Feature-Release statt alle sechs Monate. Am 5. November gab Databricks bekannt, dass es in Databricks Runtime 19 verfügbar ist. Das Release schließt mehr als 1.100 Jira-Tickets von über 210 Beitragenden. Hier sind die Änderungen, die für Analysten und Data Engineers zählen, und was wir gesehen haben, als wir PySpark 4.3 auf einer kleinen Maschine mit 2 Kernen ausgeführt haben.

141Millisekunden P99langsamster von drei Benchmarks mit Zustand
1100Jira-Ticketsin diesem Release geschlossen
210Beitragendeund mehr
3Monatezwischen Feature-Releases ab jetzt

Real-Time Mode erinnert sich jetzt

Real-Time Mode kam in früheren Releases für einfache, zustandslose Datenströme. In 4.3 übernimmt er Aufgaben, die ein Gedächtnis brauchen: einen laufenden Zähler pro Gerät, das Entfernen doppelter Ereignisse oder eine Betrugsprüfung, die auf die letzten Transaktionen schaut. Spark erreicht das mit einem neuen Ausführungsmodell: Erzeugende und verbrauchende Stages laufen gleichzeitig, verbunden durch einen "Pipeline-Shuffle", der Datensätze sofort weitergibt, statt auf das Ende einer ganzen Stage zu warten. Der Code bleibt normales Structured Streaming; nur der Trigger ändert sich.

Python
counts = events.groupBy("device_id").count()

query = (
    counts.selectExpr("CAST(device_id AS STRING) AS key",
                      "CAST(count AS STRING) AS value")
    .writeStream.format("kafka")
    .option("kafka.bootstrap.servers", "localhost:9092")
    .option("topic", "device-counts")
    .option("checkpointLocation", "/checkpoints/device-counts")
    .outputMode("update")
    .trigger(realTime="5 minutes")   # checkpoint interval, not latency
    .start()
)
End-to-End-Latenz P99 im Real-Time Mode von Spark 4.3
136 msdropDuplicates
139 msFensteraggregation
141 mstransformWithState

SCD Type 2 ohne MERGE-Kopfschmerzen

Eine Tabelle mit dem "aktuellen Stand" sagt Ihnen, wo ein Kunde heute wohnt, nicht wo er wohnte, als er bestellt hat. Historie zu bewahren hieß bisher, eigene MERGE-Logik zu schreiben. Spark 4.3 ergänzt Auto CDC in den Spark Declarative Pipelines um SCD Type 2: Jede Änderung erzeugt eine neue Version der Zeile, mit den Spalten __START_AT und __END_AT, die den Gültigkeitszeitraum markieren.

SQL
CREATE STREAMING TABLE customer_history;

CREATE FLOW customer_history_cdc AS AUTO CDC INTO customer_history
FROM STREAM(customer_changes)
KEYS (customer_id)
SEQUENCE BY event_time
STORED AS SCD TYPE 2
TRACK HISTORY ON (status, region);

Dasselbe gibt es in Python mit stored_as_scd_type=2. Eine Bedingung: Die Zieltabelle muss in einem Katalog liegen, der Operationen auf Zeilenebene unterstützt, was einfache Parquet-Tabellen nicht tun. In der Praxis heißt das Apache Iceberg im Open-Source-Spark oder Delta-Tabellen auf Databricks.

Project Feather: Spark für kleine Daten

Spark hat schon immer Fixkosten für jede Abfrage gezahlt: Planung, Verteilung der Tasks und Shuffle der Daten dazwischen. Bei einer Stichprobe von 1.000 Zeilen macht dieser Aufwand fast die ganze Zeit aus. Project Feather beginnt, ihn zu beseitigen. Mit einer Einstellung können kleine Abfragen, die eine einzelne kleine Datei lesen, als ein Task ohne Shuffle laufen.

Python
spark.conf.set("spark.sql.optimizer.singleTaskExecution.enabled", "true")
spark.read.parquet("small.parquet").groupBy("category").count().show()

Wir haben es mit einer Parquet-Datei mit 900 Zeilen getestet. Der physische Plan verlor seinen Exchange-Schritt, und der schnellste von acht Läufen sank von 85 auf 53 ms. Zum Vergleich: DuckDB 2.0 und Polars 2.1 beantworteten dieselbe Abfrage in etwa 1 ms, und der Start der lokalen Spark-Session dauerte 5,3 Sekunden. Feather macht Spark angenehmer zum Testen von Code an Stichproben, besonders von Code, den ein KI-Assistent vorschlägt, aber es macht Spark nicht zu einer Laptop-Engine. Unser Vergleich DuckDB, Polars oder Spark hat alle Zahlen.

SQL-Verbesserungen

Verschachteltes JSON in einem Schritt in Zeilen und typisierte Spalten verwandeln.

SQL
SELECT title, content
FROM JSON_TABLE(
  '{"sections":[{"title":"Returns","text":"Return within 30 days."},
                {"title":"Delivery","text":"Ships in 2 days."}]}',
  '$.sections[*]' COLUMNS (
    title   STRING PATH '$.title',
    content STRING PATH '$.text'
  )
) AS s;
-- Returns  | Return within 30 days.
-- Delivery | Ships in 2 days.

Ebenfalls neu: ANSI-UNNEST in der FROM-Klausel, Time Travel mit einem @ nach dem Tabellennamen, COMMENT ON COLUMN, ein TIME-Typ bis in Nanosekunden und Zeitstempel mit Nanosekunden-Genauigkeit (TIMESTAMP_NTZ(9)) als aktivierbare Vorschau.

Kleinere Änderungen, die man kennen sollte

  • Dateien in Archiven lesen: CSV, JSON, Parquet und mehr lassen sich jetzt direkt aus tar-, zip- und 7z-Dateien lesen (optional).
  • DataFrame.zip verbindet zwei Spaltenauswahlen desselben DataFrames, ohne auf RDDs zurückzugreifen.
  • Spark Connect erhält REST-Endpunkte zum Auflisten von Sessions und Operationen, Operations-IDs für die Nachverfolgung und einen besseren JDBC-Treiber mit ARRAY, MAP und STRUCT.
  • Schnelleres Lesen von Parquet und mehrere Verbesserungen am Optimierer, etwa Codegenerierung für UNION als Standard.
  • Experimentell: Einfache Python-UDFs wie len() können in native Spark-Ausdrücke übersetzt werden.

Vor dem Upgrade

  1. 1

    Python prüfen

    Spark 4.3 streicht Python 3.10 und braucht NumPy 1.23.2 oder neuer. Die offiziellen Docker-Images nutzen jetzt Python 3.14.

  2. 2

    Den Migrationsleitfaden lesen

    Im ANSI-Modus melden ceil und floor jetzt Überläufe als Fehler, und spark.rdd.compress ist standardmäßig an.

  3. 3

    Die Web-Oberfläche prüfen

    Eine Content Security Policy ist jetzt standardmäßig aktiv; eigene UI-Plugins müssen eventuell angepasst werden.

  4. 4

    Vorschauen bewusst einschalten

    ASOF JOIN, BIN BY und Nanosekunden-Zeitstempel hängen an Einstellungen und können sich ändern.

  5. 5

    Auf Databricks die Runtime prüfen

    Laut Databricks ist Spark 4.3 in Runtime 19 verfügbar; prüfen Sie die Spark-Version in den Runtime-Release-Notes und testen Sie Jobs zuerst auf einer Kopie.

Testen Sie Ihr Wissen

1/3Wie oft veröffentlicht Apache Spark ab 4.3 Feature-Releases?

2/3Was fügt SCD Type 2 in Auto CDC einer Tabelle hinzu?

3/3Was passiert, wenn Sie SQL ASOF JOIN in Spark 4.3 ohne geänderte Einstellung ausführen?

Weiterlesen: was in Spark 4.2 neu war, der Spickzettel für Spark SQL und PySpark und das Databricks-Update Oktober 2026.

Quellen: Release Notes und News zu Apache Spark 4.3.0 (30. Oktober 2026); Databricks-Blog, "Introducing Apache Spark 4.3, now available in Databricks Runtime 19" (5. November 2026); eigene Tests mit PySpark 4.3.0 im lokalen Modus auf einer Maschine mit 2 Kernen, Zeiten nur als Richtwerte.

Alessandro Ecclesie AgazziGeschrieben von Alessandro Ecclesie Agazzi, Analytics Engineer in London. Aktualisiert am 9 November 2026. Über mich

War das hilfreich?

Hier erscheinen regelmäßig neue Leitfäden und Artikel zu Neuigkeiten rund um Daten und KI. Folgen Sie mir auf LinkedIn oder teilen Sie diesen Artikel mit Kollegen.