Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ed:lab_01 [2024/03/06 15:47] pszwed [Join MoviesRatingsGenres] |
ed:lab_01 [2024/03/14 12:43] (current) pszwed [4.6 Join MoviesRatings] |
||
---|---|---|---|
Line 9: | Line 9: | ||
- | ===== Oprogramowanie ===== | + | ===== 1. Oprogramowanie ===== |
* JDK 17 (Spark jest kompatybilny z JDK 8, 11 i 17) | * JDK 17 (Spark jest kompatybilny z JDK 8, 11 i 17) | ||
Line 18: | Line 18: | ||
* Przyda się w przyszłości: | * Przyda się w przyszłości: | ||
- | ===== Projekt ===== | + | ===== 2. Projekt ===== |
Tworzymy projekt oparty na Mavenie, a następnie modyfikujemy '' | Tworzymy projekt oparty na Mavenie, a następnie modyfikujemy '' | ||
Line 155: | Line 155: | ||
</ | </ | ||
- | ===== Główna klasa i konfiguracja ===== | + | ===== 3. Główna klasa i konfiguracja ===== |
Napiszemy minimalistyczną klasę '' | Napiszemy minimalistyczną klasę '' | ||
Line 242: | Line 242: | ||
- | ===== Ładowanie i konwersja danych ===== | + | ===== 4. Ładowanie i konwersja danych ===== |
- | ==== Pliki ==== | + | ==== 4.1 Pliki ==== |
Wykorzystamy następujące pliki: | Wykorzystamy następujące pliki: | ||
Line 254: | Line 254: | ||
Ich opis zamieszczony jest na tej stronie: [[https:// | Ich opis zamieszczony jest na tej stronie: [[https:// | ||
- | ==== Users ==== | + | ==== 4.2 Users ==== |
<code java> | <code java> | ||
Line 333: | Line 333: | ||
ale tracimy np. kotrole nad opcją '' | ale tracimy np. kotrole nad opcją '' | ||
- | ==== Movies ==== | + | [[https:// |
+ | |||
+ | ==== 4.3 Movies ==== | ||
Dane o filmach zawierają niestrukturalne elementy: | Dane o filmach zawierają niestrukturalne elementy: | ||
Line 495: | Line 497: | ||
- | ==== Ratings ==== | + | ==== 4.4 Ratings ==== |
Załaduj dane z pliku '' | Załaduj dane z pliku '' | ||
Line 612: | Line 614: | ||
* as(Encoders.DOUBLE()) zamienia wiersze zbioru danych na obiekt wskazanego typu | * as(Encoders.DOUBLE()) zamienia wiersze zbioru danych na obiekt wskazanego typu | ||
- | ==== Tags ==== | + | ==== 4.5 Tags ==== |
**1.** Załaduj plik '' | **1.** Załaduj plik '' | ||
Line 684: | Line 686: | ||
- | ==== Join MoviesRatings ==== | + | ==== 4.6 Join MoviesRatings ==== |
**1.** Załaduj plik '' | **1.** Załaduj plik '' | ||
Line 774: | Line 776: | ||
+-------+--------------------+--------------------+----+------+-------+------+-------------------+----------------------+ | +-------+--------------------+--------------------+----+------+-------+------+-------------------+----------------------+ | ||
</ | </ | ||
+ | |||
+ | :!: **Powtarzające się nazwy kolumn?** Po poperacji join: | ||
+ | <code java> | ||
+ | df_mr = df_mr.drop(df_ratings.col(" | ||
+ | </ | ||
+ | |||
+ | |||
**2.** Pobierz listę wartości i wyświetl histogram.\\ | **2.** Pobierz listę wartości i wyświetl histogram.\\ | ||
Line 864: | Line 873: | ||
- | ==== Join MoviesRatingsGenres ==== | + | ==== 4.7 Join MoviesRatingsGenres ==== |
Jesteśmy zainteresowani informacjami o ocenach dla gatunków filmów. | Jesteśmy zainteresowani informacjami o ocenach dla gatunków filmów. | ||
Line 980: | Line 989: | ||
</ | </ | ||
- | | + | |
+ | ==== 4.8 Join UsersTags ==== | ||
+ | |||
+ | **1.** Wczytaj dane użytkowników do zbioru '' | ||
+ | |||
+ | <code java> | ||
+ | df_users.createOrReplaceTempView(" | ||
+ | df_tags.createOrReplaceTempView(" | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | **2.** Utwórz złączony zbiór za pomocą kwerendy SQL | ||
+ | |||
+ | <code java> | ||
+ | String query = " | ||
+ | |||
+ | Dataset< | ||
+ | </ | ||
+ | |||
+ | **3.** Zgrupuj dane po kolumnie '' | ||
+ | * Wzynacz listę tagów podczas grupowania za pomocą funkcji '' | ||
+ | * Sklej listę tekstów (wprowadzając separator spacji) za pomocą funkcji '' | ||
+ | |||
+ | < | ||
+ | +--------------------+--------------------+ | ||
+ | | | ||
+ | +--------------------+--------------------+ | ||
+ | |amy.mcgrath@movie...|Everything you wa...| | ||
+ | |faith.ross@movies...| | ||
+ | |boris.howard@movi...|funny Highly quot...| | ||
+ | |richard.oliver@mo...|music British Rom...| | ||
+ | |karen.wilson@movi...|bad Sinbad Comedy...| | ||
+ | |melanie.abraham@m...| jackie chan kung fu| | ||
+ | |||
+ | ... | ||
+ | |||
+ | </ | ||
+ | |||
+ | Pobierz teksty z kolumny tags do listy i wydukuj | ||
+ | |||
+ | < | ||
+ | Everything you want is here adventure | ||
+ | funny high school | ||
+ | funny Highly quotable will ferrell Boxing story MMA Tom Hardy drugs Leonardo DiCaprio Martin Scorsese | ||
+ | music British Romans 70mm World War II for katie austere | ||
+ | bad Sinbad Comedy bad bad seen at the cinema Not Seen good seen more than once classic bad classic bad bad really bad Seann William Scott sci-fi boring remake Great movie Wesley Snipes not seen bad Ben Affleck classic BEST PICTURE classic hilarious steve carell HORRIBLE ACTING interesting | ||
+ | jackie chan kung fu | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== 4.9 Join UsersRatings ==== | ||
+ | |||
+ | **1.** Wczytaj dane użytkowników do zbioru '' | ||
+ | |||
+ | **2. ** Złącz zbiory danych na podstawie identyfikatora użytkownika | ||
+ | |||
+ | **3. ** Zgrupuj dane po kolumnie '' | ||
+ | |||
+ | < | ||
+ | +--------------------+------------------+-----+ | ||
+ | | | ||
+ | +--------------------+------------------+-----+ | ||
+ | |victoria.dyer@mov...| | ||
+ | |angela.morgan@mov...| 4.869565217391305| | ||
+ | |natalie.wallace@m...| 4.846153846153846| | ||
+ | |dorothy.lewis@mov...|4.8076923076923075| | ||
+ | |liam.short@movies...| 4.735294117647059| | ||
+ | +--------------------+------------------+-----+ | ||
+ | |||
+ | </ | ||
+ | |||
+ | **4. ** Wyświetl wykres | ||
+ | |||
+ | Wyświetl wykres punktowy, '' | ||
+ | * współrzędna x to '' | ||
+ | * współrzędna y odpowiada kolumnie | ||
+ | |||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | Jako alternatywę - możesz wyświetlić histogram | ||
+ | |||
+ | ===== 5. Sprawozdania ===== | ||
+ | |||
+ | * Tworzymy dokument ze zrzutami ekranu i fragmentami wyjścia, konwertujemy go do PDF | ||
+ | * W dokumencie dodajemy tytuły sekcji z numeracją, czyli np. **4.9 Join UserRatings** | ||
+ | * Przesyłamy skompresowany kod projektu |