ipuwadol - stock.adobe.com

Wie Sie die Performance von Amazon Athena optimieren

Amazon Athena ist ein serverloser Abfrageservice. Best Practices wie Partitionierung und Komprimierung unterstützen dabei, die Leistung zu steigern und Kosten zu senken.

Amazon Athena führte einen serverlosen Ansatz für die Datenanalyse ein, der automatisch skaliert und schnelle Ergebnisse liefert. Das bedeutet jedoch nicht, dass Administratoren ihn einmal einrichten und dann vergessen können.

AWS veröffentlichte Athena, um sein Portfolio an Datenanalysediensten zu erweitern, zu dem bereits EMR und Redshift gehörten. Athena konzentrierte sich ursprünglich auf die Analyse von Daten, die in Amazon S3 gespeichert waren, unter Verwendung der SQL-Syntax. Mittlerweile unterstützt es DynamoDB, Redshift und Daten, auf die über den AWS-Glue-Katalog zugegriffen wird. Athena verwendet aktuell die Engine Version 3, die auf Trino basiert. Zuvor wurde die klassische Presto-Engine verwendet. Apache Spark ist kein direktes Athena-Engine-Backend, sondern wird eher über AWS Glue oder andere Frameworks eingesetzt. Der serverlose Ansatz macht Athena zu einer attraktiven Option, ohne dass eine teure Recheninfrastruktur gestartet werden muss.

Ohne geeignete Best Practices zur Optimierung kann eine schlechte Abfrageleistung jedoch Anwendungen und Benutzererfahrung negativ beeinflussen. Diese fünf Best Practices, wie beispielsweise Datenpartitionierung und Überwachung von Nutzungsmustern, können dabei unterstützen.

Datendateien berücksichtigen

Überlegen Sie zunächst, wie Sie gespeicherte Datendateien für die Analyse weiter optimieren können. Sehen Sie sich den Status der gespeicherten Dateien genauer an, einschließlich der folgenden Informationen:

  • Formate: Athena unterstützt gängige Dateiformate wie CSV, Parquet, ORC, JSON, Text und Binär.
  • Dateigröße: Die Dateigröße hat Auswirkungen auf die Leistung und die Kosten. Vermeiden Sie Formate, die zu größeren Datendateien führen, wie Text, CSV oder JSON.
  • Komprimierung: Komprimieren Sie Datendateien mit Snappy, Zlib, Deflate, Bzip oder Gzip. Komprimierte Dateien in spaltenorientierten Formaten wie ORC oder Parquet bieten eine bessere Leistung, was zu geringeren Kosten für das Scannen von Daten führt.

Daten partitionieren

Durch die Partitionierung von Daten wird die Anzahl der Datenabfragen reduziert, was zu einer Leistungssteigerung führen kann. Das Hauptprinzip der Partitionierung besteht darin, Datendateien entsprechend dem in jeder Datei enthaltenen Datenbereich aufzuteilen. Wenn ein Datumsfeld relevant ist, können diese Dateien entsprechend Jahr, Monat und Tag in Speicherordner abgelegt werden, wodurch bestimmte Abfragen effizienter werden.

Die Partitionierung von Dateien kann eine Herausforderung darstellen. Das für die Partitionierung der Dateien Ihres Unternehmens ausgewählte relevante Feld muss in den meisten Abfragebedingungen vorkommen. Ein Partitionsmuster kann einige Abfragen optimieren, andere jedoch nicht. Es ist wichtig, das richtige Partitionsmuster basierend auf den Anwendungsanforderungen auszuwählen.

Abfragen überprüfen

Eine weitere Überlegung ist, wie sich die Anzahl der Abfragen und deren Dauer negativ auf die Leistung auswirken können.

Kosten und Zeitaufwand für Abfragen bewerten

Abfragebedingungen, Anweisungen oder abgerufene Spalten können zu suboptimalen Datenzugriffsmustern führen. Die Ausführung der Anweisung für bestimmte Abfragen liefert wertvolle Informationen. Dazu können die Menge der abgerufenen Daten und Zeilen, die Art der Abfrage und die Leistung der Abfrage gehören. Dies bietet zusätzliche Transparenz für die Optimierung von Abfragen sowie der Dateiplatzierung und -muster.

Abfragen begrenzen

Die Anzahl der Dateien, die eine bestimmte Abfrage durchsucht, ist ebenfalls ein wichtiger Faktor, der berücksichtigt werden muss. Schaffen Sie ein Gleichgewicht zwischen der Größe jeder Datei und der Anzahl der Dateien, auf die häufig verwendete Abfragen zugreifen. Die Ausführung von Abfragen, die auf Tausende von Dateien zugreifen, kann zu einer schlechten Leistung oder zu Fehlern aufgrund der Überschreitung der Anforderungsratenbegrenzungen führen. Speichern Sie Dateien, die größer als 128 Megabyte, aber kleiner als ein Gigabyte sind. AWS bietet das S3DistCp-Tool an, das die Dateiplatzierung und -größenanpassung in S3 automatisiert.

Wiederverwendung von Abfrageergebnissen

Verwenden Sie Athena-Abfrageergebnisse für häufig verwendete Abfragen oder solche, die auf vorhersehbaren Datensätzen durchgeführt werden, unbedingt wieder. Mit der Funktion Query Result Reuse sucht Athena nach Ergebnissen früherer Abfrageausführungen, beispielsweise durch Caching. Athena gibt diese Ergebnisse zurück und speichert sie in S3, wodurch Leistung und Kosten optimiert werden können.

Mit Managed Query Results kann Athena jetzt automatisch Ergebnisse von Abfragen speichern, verschlüsseln und Lifecycle-Regeln anwenden, ohne dass man stets ein eigenes S3 Bucket konfigurieren oder Ergebnisse manuell löschen muss.

Kosten verwalten

Als serverlose Option weist Athena bei der Ausführung von Abfragen standardmäßig Rechenkapazität zu. Die Kosten für diese Konfiguration betragen fünf US-Dollar (etwa 4,23 Euro) pro Terabyte gescannter Daten, basierend auf den Preisen für die Region Europa (Frankfurt). Athena bietet auch die Option Provisioned Capacity (bereitgestellte Kapazität) an, die vier vCPU und 16 Gigabyte Memory pro Datenverarbeitungseinheit (Data Processing Unit, DPU) zuweist und keine Kosten für gescannte Daten verursacht. Anwendungsbesitzer zahlen 0,3 US-Dollar (etwa 0,26 Euro) pro DPU-Stunde, mindestens jedoch eine Stunde, die minutengenau abgerechnet wird.

Für umfangreiche oder hochvolumige Abfragen sollten Sie die Option Provisioned Capacity in Betracht ziehen, die eine pauschale Preisstruktur auf Stundenbasis bietet. Allerdings ist damit die operative Aufgabe verbunden, die geeignete Rechenkapazität für die Leistungs- und Kostenoptimierung zu überwachen und zuzuweisen.

Nutzungsmuster überwachen

Athena vereinfacht die Ausführung von Abfragen auf großen Datenmengen. Anwendungen mit einem hohen Abfragevolumen sollten serverbasierte Dienste wie EMR oder Redshift in Betracht ziehen. Eine bewährte Vorgehensweise ist die Überwachung von CloudWatch und die Verwendung von Tools wie DPUAllocated, DPUConsumed und ProcessedBytes. Diese bieten einen Überblick über die Nutzungsmuster und sind hilfreich, wenn alternative Konfigurationen in Betracht gezogen werden.

Amazon Athena auf einen Blick

Amazon Athena ist ein serverloser Analytics-Dienst, der SQL-Abfragen ohne eigene Infrastruktur ermöglicht und automatisch skaliert. Er basiert aktuell auf der Trino-Engine (Athena Engine v3) und unterstützt verschiedene Formate wie Parquet, ORC oder CSV. Datenoptimierung durch Partitionierung und Komprimierung senkt Kosten und steigert Leistung. Neben dem Pay-per-Query-Modell gibt es Provisioned Capacity mit festen Ressourcen. Funktionen wie Query Result Reuse und Managed Query Results sparen zusätzlich Zeit und Kosten.

Erfahren Sie mehr über Datenanalyse