Amazon Athena: Server-SQL auf S3
Fragen Sie S3-Daten in Athena direkt mit Standard-SQL ab, optimieren Sie sie mit Spaltenformaten wie Parquet und ORC und partitionieren Sie sie zur Kostenkontrolle.
Amazon Athena: Server-SQL auf S3 ist eine kostenlose AWS Solutions Architect-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AWS Solutions Architect-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AWS Solutions Architect-Kurs umfasst insgesamt 4 Lektionen.
Was ist Amazon Athena?
Amazon Athena ist ein serverloser, interaktiver Abfragedienst, mit dem Sie standardmäßiges SQL direkt auf in Amazon S3 gespeicherte Daten ausführen können. Sie müssen keine Server bereitstellen und keine Cluster verwalten. Sie zahlen nur für die pro Abfrage gescannten Daten (etwa 5 $ pro gescanntem TB). Athena verwendet im Hintergrund Presto und lässt sich nativ in den Glue Data Catalogue für Tabellenmetadaten integrieren.
Athena einrichten: Workgroups und Ausgabepfad
Konfigurieren Sie vor dem Ausführen von Abfragen eine Athena Workgroup und geben Sie einen S3-Pfad für die Ausgabe der Abfrageergebnisse an. Mit Workgroups können Sie den Abfrageverlauf und die Kostenverfolgung zwischen Teams trennen, die Verschlüsselung der Ergebnisse erzwingen und Limits für den Datenscan pro Abfrage festlegen, um außer Kontrolle geratene Kosten zu verhindern. Jedes Abfrageergebnis wird als CSV in den konfigurierten S3-Ausgabebucket geschrieben.
# Create a workgroup with an encrypted output location
aws athena create-work-group \
--name analytics-team \
--configuration '{
"ResultConfiguration": {
"OutputLocation": "s3://athena-results-123/analytics-team/",
"EncryptionConfiguration": {"EncryptionOption": "SSE_S3"}
},
"EnforceWorkGroupConfiguration": true,
"PublishCloudWatchMetricsEnabled": true,
"BytesScannedCutoffPerQuery": 10737418240
}'Ihre erste Abfrage ausführen
Verweisen Sie Athena auf eine Glue Data Catalogue-Datenbank und führen Sie ANSI-SQL aus. Athena unterstützt SELECT, JOIN, GROUP BY, Window-Funktionen und CTEs. Sie können außerdem CREATE TABLE AS SELECT (CTAS) verwenden, um Abfrageergebnisse als neue Tabelle im Parquet-Format zu speichern und so Zwischenergebnisse für schnellere nachgelagerte Abfragen zu materialisieren.
-- Query total sales by month from partitioned S3 data
SELECT
year,
month,
SUM(order_total) AS monthly_revenue
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year, month
ORDER BY month;
-- CTAS: materialise result as Parquet for reuse
CREATE TABLE my_db.monthly_revenue
WITH (format = 'PARQUET', external_location = 's3://my-data-lake-123/curated/monthly_revenue/')
AS
SELECT year, month, SUM(order_total) AS revenue
FROM my_db.curated_sales
GROUP BY year, month;Kostenoptimierung: Partition Pruning
Athena berechnet die Kosten pro TB gescannter Daten. Die wirkungsvollste Maßnahme zur Kostenreduzierung ist Partition Pruning: Nehmen Sie Partitionsspalten immer in Ihre WHERE-Klausel auf. Wenn Daten nach year/month/day partitioniert sind, verhindert eine Filterung nach diesen Spalten, dass Athena andere Partitionen scannt. Ohne Partitionsfilter kann eine einfache Abfrage auf einer Tabelle im Petabyte-Bereich Hunderte von Dollar kosten.
-- EXPENSIVE: No partition filter -> scans all data
SELECT * FROM my_db.curated_sales WHERE customer_id = '12345';
-- CHEAP: Partition filter applied -> scans only Jan 2024
SELECT * FROM my_db.curated_sales
WHERE year = '2024' AND month = '01' AND customer_id = '12345';Kostenoptimierung: Spaltenformat
Wenn Sie Daten im Format Apache Parquet oder ORC statt als CSV oder JSON speichern, reduziert sich die von Athena pro Abfrage gescannte Datenmenge drastisch. Bei einer spaltenorientierten Abfrage, die 3 von 50 Spalten verwendet, werden auf dem Datenträger nur die Daten dieser 3 Spalten gescannt. In Kombination mit der integrierten Komprimierung (Snappy, Zstd) sind Parquet-Dateien typischerweise 5- bis 10-mal kleiner als entsprechende CSV-Dateien, wodurch sich die Kostenersparnis weiter vervielfacht.
-- After converting raw CSV to Parquet:
-- CSV version: 500 GB table, query scans 500 GB -> $2.50
-- Parquet version: same data compressed to 50 GB,
-- query reads only 2 columns -> scans ~2 GB -> $0.01
-- Verify table format in Glue Catalogue
SHOW CREATE TABLE my_db.curated_sales;Föderierte Abfragen mit Datenquellen-Connectors
Athena Federated Query erweitert Athena über S3 hinaus und ermöglicht Abfragen auf Daten in RDS, DynamoDB, Redshift, Elasticsearch und benutzerdefinierten Quellen mithilfe von Lambda-basierten data source connectors. Stellen Sie eine Connector-Lambda-Funktion aus dem Serverless Application Repository bereit, registrieren Sie sie als Athena-Datenquelle und führen Sie anschließend Abfragen über S3-Tabellen und Live-Datenbanken in einem einzigen SQL-JOIN aus – ohne zuvor Daten verschieben zu müssen.
-- Federated query: join S3 Parquet with live RDS table
SELECT s.order_id, s.total, c.email
FROM my_db.curated_sales s
JOIN rds_lambda.prod_db.customers c
ON s.customer_id = c.id
WHERE s.year = '2024' AND s.month = '01';Integration von Athena und QuickSight
Amazon QuickSight verbindet sich direkt mit Athena als Datenquelle. Dadurch können Business-Analysten interaktive Dashboards aus S3-Daten erstellen, ohne eine zwischengeschaltete Datenbank zu benötigen. QuickSight verwendet SPICE (Super-fast, Parallel, In-memory Calculation Engine), um Ergebnisse von Athena-Abfragen zwischenzuspeichern und Dashboards schnell darzustellen. Dieser serverlose BI-Stack (S3 + Glue + Athena + QuickSight) ist ein häufiges Prüfungsmuster für kostengünstige Analysen.
Leistungsoptimierung von Athena-Abfragen
Zusätzlich zu Partitionierung und spaltenorientiertem Format können Sie Athena-Abfragen weiter optimieren, indem Sie: große Dateien aufteilen (für Parallelität sollten Dateien 128 MB bis 1 GB groß sein), Bucketing für häufig verbundene Spalten verwenden, SELECT * vermeiden und Approximationsfunktionen für Aggregationen wie approx_distinct() und approx_percentile() einsetzen, wenn keine exakten Werte erforderlich sind. Diese Techniken reduzieren sowohl Kosten als auch Latenz.
-- Use approx_distinct for fast cardinality estimate
SELECT
year,
approx_distinct(customer_id) AS approx_unique_customers
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year;Zugriff auf Athena steuern
Athena lässt sich für die Zugriffskontrolle in IAM integrieren: Benutzer benötigen Berechtigungen zum Ausführen von Athena-Abfragen (athena:StartQueryExecution), für den Zugriff auf den S3-Ausgabebucket und zum Lesen der zugrunde liegenden S3-Daten. Für eine detaillierte Zugriffssteuerung auf Spalten- und Zeilenebene kombinieren Sie Athena mit Lake Formation. Sie können eine Workgroup außerdem mithilfe von IAM-Bedingungsschlüsseln für die ARN der Workgroup auf bestimmte Datenbanken beschränken.
# Minimum IAM policy for an Athena analyst
{
"Effect": "Allow",
"Action": [
"athena:StartQueryExecution",
"athena:GetQueryExecution",
"athena:GetQueryResults",
"athena:StopQueryExecution",
"glue:GetDatabase",
"glue:GetTable",
"glue:GetPartitions",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "*"
}Abfrageergebnisse und geplante Abfragen speichern
Die Ergebnisse von Athena-Abfragen werden als CSV-Dateien in S3 gespeichert und 7 Tage lang zwischengespeichert. Wenn Sie dieselbe Abfrage in diesem Zeitraum erneut ausführen, werden die Daten daher nicht erneut gescannt. Für regelmäßig benötigte Berichte können Sie Athena Scheduled Queries verwenden, um eine Abfrage nach einem Cron-Zeitplan auszuführen und die Ergebnisse an einem neuen S3-Speicherort oder direkt in einer Tabelle zu speichern. Alternativ können Sie eine Athena-Abfrage über eine Step Functions-Zustandsmaschine oder eine EventBridge-Regel auslösen.
# Start an Athena query via CLI and retrieve results
QUERY_ID=$(aws athena start-query-execution \
--query-string 'SELECT COUNT(*) FROM my_db.curated_sales WHERE year=2024' \
--work-group analytics-team \
--query 'QueryExecutionId' --output text)
# Wait and fetch results
aws athena get-query-results --query-execution-id $QUERY_IDAthena vs. Redshift: Das passende Tool auswählen
Für die SAA-C03-Prüfung müssen Sie wissen, wann Sie Athena und wann Sie Redshift empfehlen sollten. Wählen Sie Athena für Ad-hoc-Abfragen auf S3, die nur selten ausgeführt werden und keine zu verwaltende Infrastruktur erfordern. Wählen Sie Redshift, wenn Sie Antwortzeiten im Subsekundenbereich für komplexe Joins benötigen, ein eigenes Analytics-Team Hunderte von Abfragen gleichzeitig ausführt oder Sie Redshift Spectrum verwenden möchten, um ein Data Warehouse mit S3-Daten zu erweitern. Das entscheidende Kriterium ist die Häufigkeit und Komplexität der Abfragen.
Kurzer Wissenstest
Testen Sie Ihr Verständnis der Konzepte von AWS Solutions Architect (SAA-C03) aus dieser Lektion.
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: Athena berechnet die Kosten pro gescanntem TB, daher sind Partition Pruning und das Parquet-Format entscheidende Maßnahmen zur Kostenkontrolle, Athena Federated Query erweitert SQL mithilfe von Lambda-Connectors auf Nicht-S3-Datenquellen und Athena eignet sich am besten für Ad-hoc-Abfragen, während Redshift für Analysen mit hoher Parallelität geeignet ist. Als Nächstes sehen wir uns Kinesis für Echtzeit-Datenstreaming und -analysen an.
Häufig gestellte Fragen
Ist die Lektion „Amazon Athena: Server-SQL auf S3“ kostenlos?
Ja — der vollständige Text von „Amazon Athena: Server-SQL auf S3“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AWS Solutions Architect-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AWS Solutions Architect-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Amazon Athena: Server-SQL auf S3“?
Fragen Sie S3-Daten in Athena direkt mit Standard-SQL ab, optimieren Sie sie mit Spaltenformaten wie Parquet und ORC und partitionieren Sie sie zur Kostenkontrolle. Du übst AWS Solutions Architect mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AWS Solutions Architect zu starten?
Keine Vorkenntnisse erforderlich. AWS Solutions Architect auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Amazon Athena: Server-SQL auf S3“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AWS Solutions Architect-Lektion Code schreiben und ausführen?
Ja. Jede AWS Solutions Architect-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Einen Data Lake auf S3 erstellen
- AWS Glue: ETL und Datenkatalog
- Amazon Athena: Server-SQL auf S3
- Kinesis Streams, Firehose und Echtzeitanalysen