Dane sztuczne wygenerowane z użyciem biblioteki DataFaker (https://www.datafaker.net/)
Uwaga! Dane pobieramy z miejsca wskazanego w ramach Twojego kursu
Dane mają format CSV, pliki posiadają nagłówek.
Pola w pliku:
flight_id– unikalny identyfikator lotu (UUID)flight_number– numer lotu (np. LO123)departure_airport_id– identyfikator lotniska wylotu (airport_idze słownika lotnisk)arrival_airport_id– identyfikator lotniska przylotu (airport_idze słownika lotnisk)scheduled_departure– planowana data i godzina wylotu (yyyy-MM-dd'T'HH:mm)scheduled_arrival– planowana data i godzina przylotu (yyyy-MM-dd'T'HH:mm)delay_min– opóźnienie lotu w minutachticket_price_usd– cena biletu w dolarach amerykańskichairline– linia lotnicza (LOT,Lufthansa,Ryanair,Emirates,Delta)status– status lotu (On time,Delayed,Cancelled)
Dane mają format CSV, pliki posiadają nagłówek.
Pola w pliku:
airport_id– unikalny identyfikator lotniska (kod IATA/ICAO)airport_name– nazwa lotniskacity– miasto, w którym zlokalizowane jest lotniskocountry– kraj, w którym zlokalizowane jest lotniskocontinent– kontynent (Europe,Asia,North America,South America,Africa,Oceania)type– typ lotniska (International,Regional,Domestic)
Zbiór danych: datasource1 (informacje o lotach)
Operacja do wykonania:
- Określ liczbę lotów wychodzących z każdego lotniska, kategoryzowanych według statusu lotu
- Oblicz średnią cenę biletu dla każdej grupy
Format wyniku (3):
departure_airport_id: ID lotniska wylotustatus: Status lotu (np. On time, Delayed, Cancelled)flight_count: Liczba lotów w grupieavg_ticket_price: Średnia cena biletu w USD
Klucz grupowania: departure_airport_id + status
Zbiory danych:
- Wynik MapReduce (3)
datasource4(informacje o lotniskach)
Operacja do wykonania:
- Połącz dane o lotach z informacjami o lotniskach
- Oblicz podsumowania na poziomie kraju
Format wyniku (6):
continent: Kontynentcountry: Krajtotal_flights: Liczba lotów wychodzących z krajuavg_ticket_price: Średnia cena biletu dla lotów z krajurank_in_continent: Ranking kraju według liczby lotów w ramach kontynentu
Mapper:
- Parsuje dane CSV z
datasource1 - Emituje klucz:
departure_airport_id + status - Emituje wartość:
(ticket_price, 1)dla możliwości obliczenia średniej
Reducer:
- Agreguje dla każdej kombinacji (lotnisko, status)
- Oblicza: liczbę lotów (suma liczników) i średnią cenę (suma cen / liczba lotów)
- Emituje:
departure_airport_id, status, flight_count, avg_ticket_price
Operacje:
- Załaduj wynik MapReduce jako tabelę
- Załaduj
datasource4(airports) jako tabelę - Wykonaj JOIN według
departure_airport_id = airport_id - Grupuj według
continent, country - Oblicz agregaty: suma lotów, średnia cena
- Dodaj ranking w ramach kontynentu
- Wyeksportuj wynik w formacie JSON
SQL logika:
SELECT
continent,
country,
SUM(flight_count) as total_flights,
AVG(avg_ticket_price) as avg_ticket_price,
RANK() OVER (PARTITION BY continent ORDER BY SUM(flight_count) DESC) as rank_in_continent
FROM mapreduce_result mr
JOIN airports a ON mr.departure_airport_id = a.airport_id
GROUP BY continent, country