Veröffentlicht am: Jul 11, 2022

Die Amazon EMR-Laufzeit für Apache Spark ist eine Performance-optimierte Laufzeitumgebung für Apache Spark, die bei Amazon EMR-Clustern ab 5.28 automatisch verfügbar und standardmäßig aktiviert ist. Die Amazon EMR-Laufzeit für Spark ist bis zu 3-mal schneller und bietet eine 100-prozentige API-Kompatibilität mit Open-Source-Spark.

Heute freuen wir uns, Result Fragment Caching ankündigen zu können, eine neue Funktion in der Amazon EMR-Laufzeit für Apache Spark, die Abfragen beschleunigt, die auf eine statische Datenteilmenge abzielen. In unseren internen, vom TPC-H-Benchmark abgeleiteten Tests lieferten Abfragen, die rollende und inkrementelle Fensterfunktionen nutzen, beim Einsatz von Result Fragment Caching regelmäßig eine Steigerung der Abfrage-Performance von bis zu 15,6.

Kunden speichern oft Daten in Amazon S3, die sich im Laufe der Zeit nicht ändern. Wiederholte Abfragen solcher Datensätze müssen die Ergebnisse jedoch bei jedem Durchgang erneut berechnen. Nehmen wir als Beispiel eCommerce-Bestelldaten, die Informationen zu Bestellungen enthalten, welche innerhalb von 30 Tagen zugestellt oder zurückgesandt werden. Angenommen, ein Benutzer möchte den täglichen Bestellungstrend für ein bestimmtes Produkt über das gesamte Jahr hinweg vergleichen. Die gesamten Bestelldaten verbleiben hauptsächlich unverändert, mit Ausnahme der letzten 30 Tage an Daten, aber bei einer Abrage, die die Bestellungsretouren für jeden Tag des letzten Jahres aggregiert, müssten die Ergebnisse für jeden Tag des Jahres erneut berechnet werden, wann immer die Abfrage ausgeführt wird. Result Fragment Caching löst dieses Problem, indem Ergebnisfragmente automatisch zwischengespeichert werden, also alle Teile der Ergebnisse aus Subtrees von Spark-Abfrageplänen, und die Ergebnisse bei folgenden Abfrageausführungen erneut verwendet werden. Result Fragment Caching ermöglicht die maximale Wiederverwendung der zwischengespeicherten Daten, da die Fragmente, also Ergebnisteile, in folgenden Abfragen verwendet werden können. Dies steht im Gegensatz zu Result Set Caching, bei dem die Abfrage exakt übereinstimmen muss, um Ergebnisse aus dem Zwischenspeicher zurückzugeben. Ergebnisfragmente werden in einem kundenbestimmten S3-Bucket gespeichert und können über mehrere Cluster hinweg wiederverwendet werden. Dies beschleunigt Abfragen insbesondere dann, wenn die Ergebnisse weitaus kleiner sind als der Eingabedatensatz. Mit Result Fragment Caching müssen bei wiederholten Abfragen, die Bestellungen des letzten Jahres aggregieren, nur die letzten 30 Tage geänderter Daten berechnet werden. Für alle vorherigen Tage des Jahres können die aggregierten Ergebnisse einfach aus dem Cache geladen werden, was die Abfrage-Performance beträchtlich steigert. Die Beschleunigung kann bei der Abfrage von Daten, die hauptsächlich unverändert bleiben und nur für den aktuellen Tag eingefügt werden, noch bemerkenswerter sein, zum Beispiel bei IOT-Ereignissen, Clickstream-Daten usw. In seltenen Fällen, in denen Daten modifiziert wurden, erkennt Result Fragment Caching die zwischengespeicherten Daten und markiert sie als ungültig, damit die Datengenauigkeit gewahrt bleibt.

Result Fragment Caching ist in allen Regionen verfügbar, in denen die Amazon EMR-Laufzeit für Apache Spark verfügbar ist.

Um mit Result Fragment Caching zu beginnen, lesen Sie unsere Dokumentation hier.