Apache Spark 3.0 liefert erweiterte SQL-Funktionen und ein Update der Python-API

Das Major-Release der Big-Data-Engine hat viele Verbesserungen, aber auch neue Ansätze im Gepäck, die höhere Performance und mehr Kompatibilität versprechen.

In Pocket speichern vorlesen Druckansicht
Apache Spark 3.0 liefert erweiterte SQL-Funktionen und ein Update der Python-API

(Bild: Maxger/Shutterstock.com)

Lesezeit: 4 Min.
Inhaltsverzeichnis

Im zehnten Jahr als Open-Source-Projekt legt die Community mit Apache Spark 3.0 ein neues Major-Release vor, das technisch auf der 2.x-Serie aufsetzt, aber auch neue Wege beschreitet und Überarbeitungen mitbringt, die unter anderen mehr Leistung versprechen. Dafür haben die Entwickler hinter dem Big-Data-Framework rund 3400 Jira-Tickets abgearbeitet und vor allem zahlreiche Neuerungen in Spark SQL und die Python-Unterstützung einfließen lassen.

Fast die Hälfte aller Änderungen drehen sich rund um Spark SQL und kommen sowohl High-Level-Bibliotheken wie Structured Streaming und MLlib zugute wie auch den SQL- und DataFrames-APIs. Auch an der Kompatibilität haben die Entwickler gearbeitet und die Compliance mit ANSI SQL ausgebaut. Dadurch sollen Data Scientists von höherer Datenqualität profitieren, wenn sie beispielsweise Workloads aus anderen SQL-Engines zu Spark migrieren. In Spark 3.0 gilt daher nun der proleptische gregorianische Kalender und Anwender können festlegen, dass die in Standard-SQL reservierten Keywords nicht als Identifier genutzt werden.

Zur Leistungssteigerung des Frameworks sollen neue Funktionen wie Adaptive Query Execution (AQE) oder Dynamic Partition Pruning beitragen. Da Storage und Compute in Spark voneinander getrennt sind, kommt einer optimalen Planung der Ausführung zur Laufzeit beim Eintreffen neuer Daten große Bedeutung zu. Das AQE-Framework stellt dafür verschiedene adaptive Optimierungsfunktionen bereit. Anwender können jetzt mit einer vergleichsweise großen Zahl von Shuffle-Partitionen starten. AQE führt dann zur Laufzeit kleinere benachbarte Partitionen automatisch zusammen. Das Framework kann zudem AQE eine etwaige Schieflage in der Shuffle-File-Statistik erkennen und durch Aufteilen betroffener Partitionen Joins optimieren.

Dynamic Partition Pruning soll hingegen helfen, wenn der Optimierer während des Kompilierens nicht entscheiden kann, welche Partitionen übersprungen werden können. Dieser Fall tritt insbesondere in sternförmigen Schemata auf, die aus einer oder mehreren Fact Tables bestehen, die auf eine beliebige Anzahl von Dimension Tables verweisen.

Insgesamt sollen diese Optimierungsmaßnahmen Spark 3.0 gegenüber den 2.4.x-Releases zu gut doppelter Leistung verhelfen. Im TPC-DS Benchmark konnten die Entwickler in Einzelfällen offenbar sogar Performancegewinne bis zum 18fachen messen.

Da Python die in Spark am häufigsten verwendete Programmiersprache ist, hat sich das Spark-Team auch einigen Überarbeitungen rund um Python beziehungsweise PySpark gewidmet – mit Fokus auf Funktionen und Benutzerfreundlichkeit. Überarbeitet wurde unter anderem die Pandas-API für User Defined Functions (UDF), die um Hinweise zu Python-Typen, neue Pandas-UDF-Typen sowie eine Python-typischere Fehlerbehandlung zum Umgang mit PySpark Exceptions erweitert wurde.

Zu den weiteren nennenswerten Neuerungen in Spark 3.0 zählen die Fortschritte beim Projekt Hydrogen, das zu einer engeren Verknüpfung von Deep Learning und Data Processing in Spark beitragen soll. Speziell für Structured Streaming, das seit Release 2.0 unterstützt wird, steht nun eine dedizierte UI zur Verfügung. Sie bietet Anwendern zwei Arten von Statistiken: aggregierte Informationen zu abgeschlossenen Streaming-Abfrageaufträge und detaillierte statistische Daten zu den Streaming-Abfragen. Um Spark außerdem beim Deep Learning stärker von GPUs und vergleichbaren Hardware-Beschleunigern auf den jeweiligen Zielplattformen profitieren zu lassen, können Anwender nun per Skript konkrete Beschleuniger in der Konfiguration des Cluster-Managers festlegen.

Mehr Details sowie eine komplette Übersicht aller Änderungen in Spark 3.0 finden sich in den Release Notes des Projekts. Im Vorfeld der US-Ausgabe des Spark+AI Summit 2020, die erstmals rein virtuell stattfinden wird, hat Databricks angekündigt, die Neuerungen von Spark 3.0 auch vollständig in der Databricks Runtime 7.0 zu unterstützen.

(map)