Laboratorium 6

Wykorzystanie Spark w trybie wsadowym

Linki

Dokładnie zpoznaj się z repozytorium, znajdziesz tam pytania w postaci komentarzy w plikach źródłowych

Zadanie 6.1 (4 pkt)

Przygotuj środowisko do uruchomienia Sparka z zastosowaniem Dockera. Wykorzystaj multi-stage builds. Pamiętaj o zweryfikowaniu pobranej dystrybucji sparka.

Zadanie 6.2 (4 pkt)

Stwórz przykładową aplikację Spark, która wygeneruje 10 000 000 losowych liczb double w 10 partycjach. Stwórz na początku listę 10 liczb, z wykorzystaniem sparka dokonaj rozproszenia, zmapuj każdą partycję na odpowiednią liczbę losowych doubli. W jaki sposób zainicjować generator liczb losowych tak aby liczby były losowe oraz mieć pewność że nie trafimy na sytuację gdy dwie partycje mają taki sam seed (sygnatura funkcji mapowania zawiera potrzebny seed), dlaczego należy tak robić?

Zadanie 6.3 (5 pkt)

Stwórz aplikację spark, która wygeneruje 1 000 000 losowych stringów o losowej długości z zadanego (konfigurowalnego przedziału), następnie zapisz je na dysku. Stwórz kolejną aplikację która wczyta zapisane date oraz policzy liczbe znaków.

Zadanie 6.4 (2 pkt)

Uruchom zadanie 2 z wykorzystaniem EMR.

Zadanie 6.5 (1 pkt)

Zapoznaj się ze Spark-UI, dodaj odpowiednie mapowanie portów do docker-compose.yaml tak by uzyskać do niego dostęp. Znajdź stronę na której widać DAG dla zadania 3.

Zadanie 6.6 (1 pkt)

Dodaj konfigurację która sprawi że nie będziemy widzieć logów o poziomie mniejszym niż warning ze sparka. Skonfiguruj SBT aby budowało naszą aplikację jako fat-jar (dlaczego należy to robić? czy trzeba to robić w naszym wypadku? [pomyśl o zależnościach]).

Zadanie 6.7 (2 pkt) - zadanie opcjonalne

Stwórz kolejną aplikację która policzy liczbę słów w zadanym dodatkowym źródle danych. Znajdź dowolne źródło oraz przygotuj skrypt bash który je pobierze oraz umożliwi przetwarzanie za pomocą przygotowanej aplikacji.