Aufgabe war es, Lieder von einer Spotify-Playlist anhand von ihren Daten zu kategorisieren. Das Ergebniss soll auf einer Website angezeigt werden.
- Hadoop: Datenverwaltung, Datenbanken
- Airflow: Ablaufplan
- MySql: Dantenbank für Webserver
- Php: Webserver
- Request zu Spotify: Daten von Playlist
- Lieddaten in seperate .json-Dateien speichern
- Request zu Spotify: Für jedes Lied weitere Lieddaten
- Lieddaten in seperate .json-Dateien speichern
- Tabellen in Hadoop anlegen
- Daten in Tabellen speichern
- Für jedes Lied die Musikkategorie speichern
- Finale Daten erzeugen
- MySql Tabelle anlegen und Daten aus Finaltabelle importieren
- start: Verzeichniss '/user/hadoop/spotify' anlegen, falls nicht vorhanden
- request_playlist_operator: Request zu Spotify ausführen:
- Verzeichniss '/home/airflow/requestData' löschen (falls vorhanden) und wieder anlegen (alte Daten sind weg)
- Verzeichniss '/home/airflow/requestData/playlist' anlegen
- Verzeichniss '/home/airflow/requestData/trackdata' anlegen
- Request an Spotify senden (Lieder von Playlists)
- Jedes einzelne Lied in einer .json-Datei speichern (in '/home/airflow/requestData/playlist/')
- Für jede Id neuen Request ausführen, bei dem man weitere Lieddaten erhält. Wird jeweils in /trackdata/ gespeichert.
- empty_spotify: Verzeichniss '/user/hadoop/spotify' leeren (löschen und neu anlegen)
- create_hdfs_spotify_dir: Verzeichniss '/user/hadoop/spotify' anlegen
- Verzeichnisse anlegen
- create_hdfs_spotify_raw_dir: '/user/hadoop/spotify/rawPlaylist'
- create_hdfs_spotify_raw_trackData_dir: '/user/hadoop/spotify/rawTrackData'
- create_hdfs_spotify_raw_categories_dir: '/user/hadoop/spotify/rawCategories'
- create_hdfs_spotify_final_dir: '/user/hadoop/spotify/final'
- reqDataCopyPlaylist: .json-Dateien von '/home/airflow/requestData/playlist' nach '/user/hadoop/spotify/rawPlaylist/' kopieren
- reqDataCopyTrackData: .json-Dateien von '/home/airflow/requestData/trackdata' nach '/user/hadoop/spotify/rawTrackData/' kopieren
- Anlegen von Tabellen
- createTableRawPlaylist: rawplaylist
- createTableRawTrackData: rawtrackdata
- createTableRawCategorie: rawcategories
- createTableFinal: final
- Daten in rawcategories hinzufügen:
- insertCategory_metal: Metal
- insertCategory_classic: Classic
- insertCategory_rock: Rock
- insertCategory_vocal: Vocal
- insertCategory_electro: Electro
- insertCategory_podcast: Podcast
- insertCategory_soul: Soul
- insertCategory_hiphop: HipHop
- insertoverwrite_final: Daten in Finaldatenbank schreiben
- createTableToMysql: MySql - Datenbank erstellen
- exportToMysql: Daten in MySql - Datenbank exportieren
- finish_operator: Verzeichniss '/home/airflow/requestData' löschen
- Dag: spotify.py
- SQL-Hive: Rawdaten für Plalist
- SQL-Hive: Rawdaten für Trackdaten
- SQL-Hive: Rawdaten für Kategorien
- SQL-Hive: Finaldaten
- SQL-MySql: Tieldaten
- Webserver: Startseite
- Webserver: Styledateien in Unterordner
- Der Authentifizierungscode von Spotify läuft nach einer gewissen Zeit aus. D.h. man muss immer einen neuen beantragen und diesem im Pythonscript aktualisieren. Es gibt auch eine Funktion bei Spotify, wo man automatisch ein Request machen kann und einen neuen erhalten kann. Aus Zeitgründen konnte dieses Feature jedoch nichtmehr implementiert werden.