Amazon Athena
Analytics Cloud Practitioner Solutions Architect Associate

Amazon Athena

Amazon Athena

Interaktywne zapytania SQL na danych w S3 - bez serwera, bez infrastruktury. Analizuj logi, CSV, JSON, Parquet i ORC platac tylko za przeskanowane dane.

Amazon Athena to serverless serwis do interaktywnych zapytan SQL na danych przechowywanych w Amazon S3. Nie musisz konfigurowac serwerow, klastrow ani ladowac danych do bazy - wskazujesz bucket S3, definiujesz schemat tabeli i odpytujesz dane standardowym SQL-em (silnik Presto/Trino).

Athena obsluguje popularne formaty danych: CSV, JSON, Parquet, ORC, Avro i inne. Integruje sie z AWS Glue Data Catalog jako centralnym repozytorium metadanych. Placisz wylacznie za ilosc danych przeskanowanych przez zapytanie - bez oplat za bezczynnosc.

Czy wiesz, ze...

Athena bazuje na silniku Trino (dawniej PrestoSQL), ktory powstal w Facebooku do analizy petabajtow danych. Zapytania, ktore napiszes w Athena, zadzialalyby rowniez na samodzielnym klastrze Trino - to ten sam SQL!

Pro Tip

Zlota zasada Athena: (1) Konwertuj CSV do Parquet za pomoca CTAS, (2) partycjonuj po dacie (year/month/day), (3) uzywaj projekcji kolumn (SELECT col1,col2 zamiast SELECT *). Te trzy kroki redukuja koszty o 90%+ i przyspieszaja zapytania 10-100x. Dla powtarzalnych zapytan rozwaz Redshift Serverless - przy regularnym uzyciu moze byc tanszy niz Athena.

Uwaga

Athena pricing ($5/TB scanned) moze zaskoczyc przy duzych zbiorach danych. Zawsze konwertuj dane do Parquet/ORC (kolumnowe) i uzywaj partycjonowania - to moze zredukowac koszty o 90-99%. Pelny skan 1TB CSV kosztuje $5, ale te same dane w Parquet z partycjami moga skanowac tylko 10GB = $0.05.

Athena to serverless query engine, ktory pozwala analizowac dane w S3 za pomoca standardowego SQL bez potrzeby ladowania danych do bazy danych. Platisz tylko za ilosc przeskanowanych danych ($5/TB). Athena uzywa Presto/Trino pod spodem i obsluguje formaty CSV, JSON, Parquet, ORC, Avro i wiele innych.

1

Konfiguracja zrodla danych w S3

Dane do analizy przechowujesz w S3 w zorganizowanej strukturze folderow. Optymalny uklad to partycjonowanie po najczesciej filtrowanych kolumnach: s3://bucket/data/year=2024/month=03/day=15/. Formaty kolumnowe (Parquet, ORC) sa 3-10x tansze niz CSV/JSON, bo Athena skanuje tylko potrzebne kolumny. Kompresja (GZIP, Snappy, ZSTD) dodatkowo redukuje skanowane dane i koszty.

2

Tworzenie bazy danych i tabel (DDL)

Definicje tabel (schema) sa przechowywane w AWS Glue Data Catalog. CREATE EXTERNAL TABLE wskazuje na lokalizacje S3, definiuje kolumny, format danych i partycje. Tabele sa "external" - Athena nie kopiuje danych, tylko czyta je z S3 w momencie zapytania. Mozesz tworzyc tabele recznie (CREATE TABLE) lub automatycznie przez Glue Crawler, ktory skanuje S3 i wykrywa schemat.

3

Partycjonowanie danych

Partycje to sposob na ograniczenie ilosci skanowanych danych. Bez partycji Athena skanuje caly dataset przy kazdym zapytaniu. Z partycjami po dacie, zapytanie WHERE year=2024 AND month=03 skanuje tylko dane z marca 2024 - oszczednosc nawet 95%. Partycje moga byc: Hive-style (year=2024/month=03 w sciezce S3) lub projection-based (generowane dynamicznie przez Athena bez potrzeby MSCK REPAIR).

4

Pisanie zapytan SQL

Athena obsluguje ANSI SQL z rozszerzeniami Presto/Trino: window functions (RANK, LAG, LEAD), arrays i maps, UNNEST do rozwijania zagniezdzen, APPROX_DISTINCT dla szybkiego count distinct, regularne wyrazenia (REGEXP_LIKE). Wyniki zapytan sa zapisywane w S3 (domyslnie w formacie CSV). Zapytanie na 1 TB danych w Parquet z partycjami typowo trwa 5-30 sekund.

5

Zapisywanie Named Queries

Named Queries (Saved Queries) pozwalaja zapisac czesto uzywane zapytania z nazwa i opisem. Mozesz je udostepniac w ramach Workgroup i wywolywac przez API/CLI (StartQueryExecution z QueryString lub NamedQueryId). W polaczeniu z parameterized queries mozesz tworzyc reuzywalne szablony z placeholderami, ktore sa bezpieczne przed SQL injection.

6

Workgroups - kontrola dostepu i kosztow

Workgroups izoluja uzytkownikow, zapytania i koszty. Kazdy Workgroup ma: wlasna lokalizacje wynikow w S3, limit kosztu zapytan (np. max 100 MB skanowania), limit calkowity (np. max 1 TB/dzien), ustawienia szyfrowania wynikow. Typowy setup: osobne Workgroups dla dev, staging, prod i osobny dla analitykow z nizszym limitem skanowania. Metryki zuzycia sa widoczne per Workgroup.

Praktyczne techniki optymalizacji kosztow i wydajnosci Athena - od formatow danych po zaawansowane wzorce zapytan na data lake.

Partycjonuj po dacie - oszczednosc do 95%

Partycjonowanie to najwazniejsza optymalizacja w Athena. Dane logow z calego roku (365 partycji dziennych): zapytanie za ostatni tydzien skanuje tylko 7/365 = 2% danych. Uzywaj partition projection zamiast MSCK REPAIR TABLE - projection generuje partycje dynamicznie na podstawie regul (np. zakres dat), bez potrzeby skanowania S3. To eliminuje opoznienia przy dodawaniu nowych partycji.

Poczatkujacy

Formaty kolumnowe: Parquet i ORC

CSV/JSON: Athena musi skanowac kazdy bajt pliku. Parquet/ORC: dane sa zorganizowane kolumnowo - zapytanie SELECT user_id, event_type skanuje tylko te 2 kolumny z 50-kolumnowej tabeli (redukcja 96%). Konwertuj dane do Parquet za pomoca CTAS (CREATE TABLE AS SELECT) lub Glue ETL. Dodaj kompresje Snappy (domyslna w Parquet) lub ZSTD (lepszy ratio). Optymalny rozmiar pliku: 128 MB - 512 MB.

Poczatkujacy

CTAS do materializowania wynikow

CREATE TABLE AS SELECT (CTAS) zapisuje wynik zapytania jako nowa tabele w S3 w wybranym formacie. Uzycie: przeksztalcenie CSV na Parquet, agregowanie danych do tabeli summary, tworzenie zoptymalizowanych podzapytan. CTAS moze tez dodac partycjonowanie i bucketing. Limit: CTAS tworzy max 100 partycji w jednym zapytaniu - dla wiekszych datasetow uzywaj INSERT INTO z wieloma zapytaniami.

Zaawansowany

Athena Federated Query - zapytania do wielu zrodel

Federated Query pozwala odpytywac dane w DynamoDB, RDS, Redshift, OpenSearch, CloudWatch Logs i wiecej - bezposrednio z Athena SQL. Pod spodem dziala Lambda connector. Mozesz joinowac dane z S3 z danymi z DynamoDB w jednym zapytaniu. Gotowe connectory sa w AWS Serverless Application Repository. Federated Query jest idealny dla ad-hoc analityki, ale dla regularnych raportow lepiej skopiowac dane do S3.

Zaawansowany

Workgroups do kontroli kosztow

Ustaw per-query limit (np. 1 GB) i dzienny limit (np. 100 GB) na Workgroup. Bez limitow jeden bledny SELECT * FROM huge_table moze przeskanowac terabajty i wygenerowac rachunek w setkach dolarow. Tworz osobne Workgroups: "analysts" z limitem 10 GB/query, "etl" z limitem 500 GB/query, "admin" bez limitu. Monitoruj metryki DataScannedInBytes per Workgroup w CloudWatch.

Poczatkujacy

MSCK REPAIR TABLE vs Partition Projection

MSCK REPAIR TABLE skanuje S3, szukajac nowych partycji - przy tysiacach partycji trwa minuty i kosztuje (ListObjects API calls). Partition Projection definiuje reguly generowania partycji (typ: date, range: 2020-01-01 do NOW, interval: 1 day) - Athena generuje partycje dynamicznie bez skanowania S3. Migruj z MSCK na Projection dla tabel z regularnymi partycjami (np. dziennymi logami).

Zaawansowany

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon Athena bezposrednio w konsoli AWS.

Do czego sluzy Amazon Athena?

01

Analiza logow

Odpytuj logi CloudTrail, VPC Flow Logs, ALB Access Logs czy logi aplikacji przechowywane w S3. Idealne do ad-hoc analizy bezpieczenstwa i troubleshootingu.

02

Eksploracja danych w data lake

Uruchamiaj zapytania SQL na danych w S3 data lake bez koniecznosci ladowania ich do tradycyjnej bazy danych. Obsluguje petabajty danych.

03

Raportowanie i dashboardy

Lacz Athena z Amazon QuickSight do tworzenia dashboardow biznesowych. Athena odpytuje dane, QuickSight je wizualizuje.

04

ETL lekkie z CTAS

Uzyj CREATE TABLE AS SELECT (CTAS) do transformacji danych i zapisu wynikow w optymalnym formacie (np. konwersja CSV do Parquet z partycjonowaniem).

Co musisz wiedziec?

Silnik Presto/Trino

Athena korzysta z rozproszonego silnika SQL Trino (dawniej Presto). Obsluguje ANSI SQL, funkcje okienkowe, JOIN-y, podzapytania i wiele formatow danych.

Glue Data Catalog

Centralny katalog metadanych (bazy danych, tabele, schematy). Athena uzywa go do odczytania struktury danych w S3. Mozesz go wypelnic recznie lub przez Glue Crawler.

Partycjonowanie

Organizacja danych w S3 po kluczach (np. rok/miesiac/dzien). Athena skanuje tylko potrzebne partycje, co drastycznie zmniejsza koszty i przyspiesza zapytania.

CTAS (CREATE TABLE AS SELECT)

Zapytanie tworzace nowa tabele z wynikow SELECT. Swietne do konwersji formatow (CSV -> Parquet), partycjonowania danych i materializacji wynikow.

Federated Query

Zapytania do zewnetrznych zrodel danych (DynamoDB, RDS, Redshift, on-premises) za pomoca Lambda connectorow. Jeden SQL laczacy dane z S3 i bazy relacyjnej.

Workgroup

Grupa robocza izolujaca ustawienia, limity kosztow i uprawnienia. Kazdy workgroup moze miec osobny limit danych na zapytanie i dedykowany bucket na wyniki.

Architektura: Serverless Data Lake z Athena i Glue

Architektura data lake, w ktorej surowe dane w S3 sa katalogowane przez Glue, optymalizowane do formatu Parquet i analizowane przez Athena. QuickSight wizualizuje wyniki dla uzytkownikow biznesowych.

S3 Data Lake
S3 Data Lake Surowe dane (JSON/CSV) i zoptymalizowane (Parquet), partycjonowane po dacie
Skanowanie S3
AWS Glue Crawler
AWS Glue Crawler Automatycznie wykrywa schemat danych w S3, aktualizuje Catalog co N godzin
Rejestracja schematow
AWS Glue Data Catalog
AWS Glue Data Catalog Centralny metastore: bazy, tabele, partycje, schematy kolumn
SQL query
Amazon Athena
Amazon Athena Serverless SQL engine, $5/TB skanowanych danych, Presto/Trino pod spodem
Wizualizacja wynikow
Amazon QuickSight
Amazon QuickSight Dashboardy BI, SPICE in-memory engine, embedded analytics dla SaaS
Konwertuj dane z CSV/JSON na Parquet uzywajac Glue ETL job lub Athena CTAS - redukcja kosztow skanowania o 90%+ i przyspieszenie zapytan 3-10x.
Uzywaj Partition Projection zamiast MSCK REPAIR TABLE dla tabel z regularnymi partycjami dziennymi - eliminuje opoznienia i koszty skanowania S3 przy dodawaniu nowych partycji.
Ustaw per-query i dzienny limit skanowania na Workgroup, aby zapobiec przypadkowemu przeskanowaniu terabajtow danych jednym zapytaniem SELECT * bez WHERE.

Porownanie Athena vs Redshift vs EMR

Serwis Model Setup Najlepszy dla Koszt Wydajnosc Dane Concurrent users
Athena Serverless SQL na S3 Natychmiastowy (0 config) Ad-hoc queries, logi, eksploracja $5/TB zeskanowanych danych Sekundy-minuty S3 (external) Ograniczone (DML quota)
Redshift Data warehouse (klaster) Minuty (Serverless) lub godziny (provisioned) BI, raporty, powtarzalne zapytania Od $0.36/godz. (Serverless) Sekundy (Concurrency Scaling) Lokalne + Spectrum (S3) Setki (Concurrency Scaling)
EMR Zarzadzany Hadoop/Spark Minuty-godziny ETL, ML, custom Spark jobs Od $0.015/godz. per node Zalezy od klastra S3/HDFS Zalezy od config

Ile kosztuje Amazon Athena?

Pay per query

Placisz za ilosc danych przeskanowanych przez zapytanie. Minimum 10 MB na zapytanie.

$5.00 za TB przeskanowanych danych

Oszczednosci z Parquet

Format kolumnowy (Parquet, ORC) skanuje tylko potrzebne kolumny, zmniejszajac koszty nawet 30-90% vs CSV.

Zapytanie na 1 TB CSV = $5.00, to samo na Parquet = ~$0.50

Partycjonowanie

Partycjonowanie danych ogranicza skanowanie do wybranych folderow S3.

Zapytanie o 1 dzien z 365 skanuje ~0.3% danych

Free Tier

DDL (CREATE TABLE, ALTER) i zapytania zakonczone bledem nie sa naliczane. Brak stalych oplat - 0 zapytan = 0 kosztow.

Brak oplat za bezczynnosc!

Przyklady AWS CLI

Uruchom zapytanie SQL

Uruchamia zapytanie SQL na tabeli w Athena

aws athena start-query-execution \
 --query-string "SELECT date, count(*) as cnt FROM logi_aplikacji WHERE date = '2024-01-15' GROUP BY date ORDER BY cnt DESC LIMIT 10" \
 --query-execution-context Database=moja_baza \
 --result-configuration OutputLocation=s3://moj-bucket-athena/wyniki/

Sprawdz status zapytania

Pobiera status wykonania zapytania

aws athena get-query-execution \
 --query-execution-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
 --query "{Status:Status.State,Skanowano:Statistics.DataScannedInBytes,Czas:Statistics.EngineExecutionTimeInMillis}"

Pobierz wyniki zapytania

Wyswietla wyniki ukonczonego zapytania

aws athena get-query-results \
 --query-execution-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
 --max-results 20

Utworz named query

Zapisuje zapytanie jako named query do ponownego uzycia

aws athena create-named-query \
 --name "Top-strony-dziennie" \
 --database moja_baza \
 --query-string "SELECT page_url, COUNT(*) as views FROM access_logs WHERE date = current_date GROUP BY page_url ORDER BY views DESC LIMIT 20" \
 --description "Top 20 najczesciej odwiedzanych stron dziennie"

Quiz: Amazon Athena

Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.

Twoj wynik: 0 / 4

1. Za co placisz w Amazon Athena?

2. Jak najskuteczniej zmniejszyc koszty zapytan w Athena?

3. Z jakim serwisem AWS Athena integruje sie jako katalog metadanych?

4. Czym sa Federated Queries w Athena?

Chcesz poznac Amazon Athena w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon Athena krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy