Published: June 18, 2020
von Matei Zaharia, Reynold Xin, Xiao Li, Wenchen FanundYin Huai
Wir freuen uns, bekannt zu geben, dass das Apache SparkTM 3.0.0 Das Release ist auf Databricks als Teil unserer neuen Databricks Runtime 7.0 verfügbar. Die 3.0.0 Release über 3.400 Patches enthält, den Höhepunkt der enormen Beiträge aus der Open Source-Community darstellt und wichtige Fortschritte bei den Python- und SQL-Funktionen sowie einen Fokus auf die Benutzerfreundlichkeit für Exploration und Produktion bringt. Diese Initiativen zeigen, wie sich das Projekt entwickelt hat, um mehr Anwendungsfälle abzudecken und ein breiteres Publikum anzusprechen, wobei es in diesem Jahr sein 10-jähriges Jubiläum als Open-Source-Projekt feiert.
Hier sind die wichtigsten neuen Features in Spark 3.0:
Für die Übernahme dieser Version von Apache Spark sind keine größeren Code-Änderungen erforderlich. Weitere Informationen finden Sie im Migrationsleitfaden.
Wir feiern 10 Jahre Entwicklung und Weiterentwicklung von Spark
Spark hat seinen Ursprung im AMPlab der UC Berkeley, einem Forschungslabor mit Schwerpunkt auf datenintensivem Computing. Forscher des AMPlab arbeiteten mit großen Internetunternehmen an deren Daten- und KI-Problemen. Dabei erkannten sie, dass diese Probleme bald alle Unternehmen mit großen und wachsenden Datenmengen betreffen würden. Das Team hat eine neue Engine entwickelt, um diese neuen Workloads zu bewältigen und gleichzeitig die APIs für die Arbeit mit Big Data für Entwickler deutlich zugänglicher zu machen.
Beiträge aus der Community erweiterten Spark schnell auf verschiedene Bereiche. Neue Funktionen für Streaming, Python und SQL kamen hinzu und diese Muster bilden heute einige der dominanten Anwendungsfälle für Spark. Diese kontinuierliche Investition hat Spark dorthin gebracht, wo es heute steht: als De-facto-Engine für Workloads in den Bereichen Datenverarbeitung, Data Science, Machine Learning und Datenanalyse. Apache Spark 3.0 setzt diesen Trend fort, indem es die Unterstützung für SQL und Python – die beiden heute am weitesten verbreiteten Sprachen mit Spark – erheblich verbessert sowie die Performance und Bedienbarkeit im übrigen Spark optimiert.
Verbesserung der Spark SQL-Engine
Spark SQL ist die Engine, die den meisten Spark-Anwendungen zugrunde liegt. Beispielsweise haben wir auf Databricks festgestellt, dass über 90 % der Spark-API-Aufrufe DataFrame-, Dataset- und SQL-APIs zusammen mit anderen vom SQL-Optimierer optimierten Bibliotheken verwenden. Das bedeutet, dass selbst Python- und Scala-Entwickler einen Großteil ihrer Arbeit über die Spark SQL-Engine laufen lassen. Im Spark 3.0-Release betrafen 46 % aller eingereichten Patches SQL, wodurch sowohl die Performance als auch die ANSI-Kompatibilität verbessert wurden. Wie unten dargestellt, war die Gesamt-Runtime von Spark 3.0 etwa doppelt so schnell wie die von Spark 2.4. Als Nächstes erläutern wir vier neue Features in der Spark SQL-Engine.
Das neue Framework Adaptive Abfrage Execution (AQE) verbessert die Performance und vereinfacht das Tuning, indem es zur Laufzeit einen besseren Ausführungsplan generiert, selbst wenn der ursprüngliche Plan aufgrund fehlender/ungenauer Datenstatistiken und falsch geschätzter Kosten suboptimal ist. Aufgrund der Trennung von Speicherung und compute in Spark kann der Dateneingang unvorhersehbar sein. Aus all diesen Gründen wird die Anpassungsfähigkeit zur Laufzeit für Spark wichtiger als für herkömmliche Systeme. Dieses Release führt drei wichtige adaptive Optimierungen ein:
Basierend auf einem 3-TB-TPC-DS-Benchmark kann Spark mit AQE im Vergleich zu Spark ohne AQE bei zwei Queries eine mehr als 1,5-fache Performance und bei weiteren 37 Queries eine mehr als 1,1-fache Performance erzielen.
Dynamic Partition Pruning wird angewendet, wenn der Optimierer zur Kompilierzeit nicht identifizieren kann, welche Partitionen übersprungen werden können. Dies ist bei Sternschemata nicht unüblich, die aus einer oder mehreren Faktentabellen bestehen, die auf eine beliebige Anzahl von Dimensionstabellen verweisen. Bei solchen Join-Operationen können wir die Partitionen, die der Join aus einer Faktentabelle liest, bereinigen, indem wir jene Partitionen identifizieren, die aus dem Filtern der Dimensionstabellen resultieren. In einem TPC-DS-Benchmark zeigen 60 von 102 Abfragen eine signifikante Beschleunigung zwischen dem 2-fachen und 18-fachen.
Die ANSI-SQL-Compliance ist entscheidend für die Migration von Workloads von anderen SQL-Engines zu Spark SQL. Um die Compliance zu verbessern, wechselt dieses Release zum proleptischen gregorianischen Kalender und ermöglicht es Benutzern außerdem, die Verwendung der reservierten Schlüsselwörter von ANSI SQL als Bezeichner zu verbieten. Zusätzlich haben wir eine Laufzeit-Überlaufprüfung bei numerischen Operationen und eine Typdurchsetzung zur Kompilierzeit beim Einfügen von Daten in eine Tabelle mit einem vordefinierten Schema eingeführt. Diese neuen Validierungen verbessern die Datenqualität.
Join-Hints: Auch wenn wir den Compiler kontinuierlich verbessern, gibt es keine Garantie, dass er in jeder Situation die optimale Entscheidung trifft – die Auswahl des Join-Algorithmus basiert auf Statistiken und Heuristiken. Wenn der Compiler nicht die beste Wahl treffen kann, können Benutzer Join-Hints verwenden, um den Optimizer zu beeinflussen, einen besseren Plan zu wählen. Dieses Release erweitert die bestehenden Join-Hints um neue Hints: SHUFFLE_MERGE, SHUFFLE_HASH und SHUFFLE_REPLICATE_NL.
Viele Python-Entwickler nutzen die Pandas-API für Datenstrukturen und Datenanalysen, aber sie ist auf die Single-Node-Verarbeitung beschränkt. Wir haben auch Koalas weiterentwickelt, eine Implementierung der pandas-API auf Basis von Apache Spark, um data scientists bei der Arbeit mit Big Data in verteilten Umgebungen produktiver zu machen. Mit Koalas müssen viele Funktionen (z. B. Plotting-Unterstützung) nicht mehr in PySpark erstellt werden, um eine effiziente Performance über einen Cluster hinweg zu erzielen.
Nach mehr als einem Jahr Entwicklungszeit liegt die Abdeckung der Koalas-API für Pandas bei fast 80 %. Die monatlichen PyPI-Downloads von Koalas sind schnell auf 850.000 gestiegen, und Koalas entwickelt sich mit einer zweiwöchentlichen Release-Kadenz schnell weiter. Während Koalas vielleicht der einfachste Weg ist, von Ihrem Single-Node-Pandas-Code zu migrieren, verwenden viele immer noch die PySpark-APIs, die ebenfalls an Popularität gewinnen.
Spark 3.0 bringt mehrere Verbesserungen für die PySpark-APIs:
Die Verbesserung der Python-Unterstützung und der Benutzerfreundlichkeit in Spark ist nach wie vor eine unserer höchsten Prioritäten.
Hydrogen, Streaming und Erweiterbarkeit
Mit Spark 3.0 haben wir Key-Komponenten für Project Hydrogen fertiggestellt und neue Funktionen zur Verbesserung von Streaming und Erweiterbarkeit eingeführt.
Weitere Updates in Spark 3.0
Spark 3.0 ist ein wichtiges Release für die Community, in dem über 3.400 Jira-Tickets gelöst wurden. Es ist das Ergebnis von Beiträgen von über 440 Mitwirkenden, darunter Einzelpersonen sowie Unternehmen wie Databricks, Google, Microsoft, Intel, IBM, Alibaba, Facebook, Nvidia, Netflix, Adobe und viele mehr. Wir haben in diesem Blogpost eine Reihe der wichtigsten Fortschritte bei SQL, Python und Streaming in Spark hervorgehoben, aber es gibt viele andere Funktionen in diesem Meilenstein 3.0, die hier nicht behandelt werden. Erfahren Sie mehr in den Versionshinweisen und entdecken Sie alle anderen Verbesserungen in Spark, einschließlich Datenquellen, Ökosystem, Monitoring und mehr.
Legen Sie noch heute mit Spark 3.0 los
Wenn Sie Apache Spark 3.0 in der Databricks Runtime 7.0 ausprobieren möchten, registrieren Sie sich für einen Kostenlose Testversion Account und legen Sie in wenigen Minuten los. Die Verwendung von Spark 3.0 ist ganz einfach: Wählen Sie beim Starten eines Clusters die Version „7.0“ aus.
Erfahren Sie mehr über die Feature- und Release-Details:
Notícias
December 23, 2024/8 min de leitura
Anúncios
November 19, 2025/7 min de leitura


