Prácticas
Spotify
Section titled “Spotify”Vamos a analizar un dataset con un millón de canciones publicadas entre los años 2000 y 2025 en busca de patrones, resolver preguntas de negocio y extraer con clusiones.
Este dataset contiene información real sobre géneros, artistas, años, puntuaciones de popularidad y características de audio (energía, danceabilidy, valence, etc…).
Después de cagar los datos en HDFS, utilizaremos scripts MapReduce para obtener información, posteriormente obtendremos la misma información utilizando HIVE.
Objetivos del Proyecto
Section titled “Objetivos del Proyecto”- Cargar y almacenar grandes volúmenes de datos musicales en el sistema HDFS.
- Procesar y analizar el dataset aplicando MapReduce para realizar investigaciones sobre géneros, artistas y tendencias de popularidad.
- Crear un data warehouse musical en Hive, aplicando particionado y optimización real para lanzar consultas analíticas avanzadas.
- Responder a diferentes preguntas de negocio.
Descripción de las Tareas
Section titled “Descripción de las Tareas”- Preparación y carga de datos (HDFS)
- Descarga el dataset de 1 millón de canciones de Spotify.
- Organiza los archivos y cárgalos en HDFS siguiendo una estructura profesional.
- Documenta y verifica la correcta inserción, aportando estadísticas básicas del volumen cargado.
- Procesamiento distribuido (MapReduce)
- Implementa varios scripts MapReduce (en Python) para analizar:
- La evolución de popularidad de cada género año a año.
- Qué artistas destacan por la energía, bailable y positividad de su música.
- Qué géneros han subido más posiciones en la última década.
- Extrae rankings, medias y tendencias a partir del output de tus mappers/reducers.
- Análisis avanzado con Hive
- Crea tablas externas e internas en Hive aprovechando las posibilidades de particionado por género y año.
- Ejecuta consultas SQL avanzadas para:
- Detectar géneros emergentes o en declive.
- Identificar artistas “todoterreno” (muchos géneros, alto éxito).
- Analizar la relación entre duración y popularidad de las canciones.
- Correlacionar características de audio y éxito comercial. 4. Presentación de resultados
- Elabora un informe visual con interpretaciones comprensibles de los KPIs extraídos. Incluye gráficas (pueden ser externas a Hadoop) de al menos: Evolución temporal de géneros. Artistas que dominan diferentes métricas. Reparto de popularidad global y por subgrupos (por ejemplo, géneros de moda en 2024-2025). Escribe conclusiones y responde: ¿Qué necesita hoy una canción para ser viral? ¿Hay patrones que puedas anticipar?
- Implanta una consulta o análisis predictivo: ¿puedes identificar canciones de 2025 que están a punto de “explotar” en popularidad usando solo sus características y sin mirar su label de éxito real?
Campos principales del dataset
Section titled “Campos principales del dataset”track_id: Identificador único de Spotifytrack_name: Nombre de la canciónartist_name: Nombre del artista principalartist_count: Número de artistas colaboradoresrelease_year: Año de lanzamientogenre: Género musicalpopularity: Puntuación de popularidad (0-100)duration_ms: Duración en milisegundosdanceability: Qué bailable es la canción (0.0-1.0)energy: Intensidad y actividad (0.0-1.0)key: Tonalidad musicalloudness: Volumen en dBmode: Mayor (1) o Menor (0)speechiness: Presencia de palabras habladasacousticness: Confianza en ser acústica (0.0-1.0)instrumentalness: Falta de voces (0.0-1.0)liveness: Presencia de audienciavalence: Positividad musical (0.0-1.0)tempo: BPM (beats por minuto)Empezamos con la práctica
Section titled “Empezamos con la práctica”Debemos descargar el dataset de kaggle, para ello vamos a utilizar kaggle-cli a través de pip
# Creamos una carpeta para el proyecto
# Creamos un entorno virtual y lo activamospython3 -m venv venvsource venv/bin/activate
#pip install kaggleVamos a https://www.kaggle.com/settings y creamos un token (CREATE NEW TOKEN).
Esto generará un archivo kaggle.json que debemos copiar en ~/.kaggle/kaggle.json.
A partir de este momento ya podremos, por ejemplo, consultar los datasets existentens en kaggle que contengan la palabra clave spotify
kaggle datasets list -s spotifyFASE1: HDFS - Gestión de datos
Section titled “FASE1: HDFS - Gestión de datos”Descarga y preparación de datos
Section titled “Descarga y preparación de datos”Descargamos el dataset para la actividad:
kaggle datasets download -d amitanshjoshi/spotify-1million-tracksunzip spotify-1million-tracks.zip
# Verificamos la estructura de archivosls -lhfile *.csvwc -l *.csvCreación estructura HDFS
Section titled “Creación estructura HDFS”hdfs dfs -mkdir -p /user/alumno/proyecto_spotifyhdfs dfs -mkdir -p /user/alumno/proyecto_spotify/raw_datahdfs dfs -mkdir -p /user/alumno/proyecto_spotify/mapreduce_outputhdfs dfs -mkdir -p /user/alumno/proyecto_spotify/hive_warehouse
# Verificar creaciónhdfs dfs -ls -R /user/alumno/proyecto_spotifyCarga de datos
Section titled “Carga de datos”# Cargar archivo principalhdfs dfs -put ~/proyecto_spotify/data/spotify_data.csv \/user/alumno/proyecto_spotify/raw_data/# Verificar carga y tamañohdfs dfs -ls -h /user/alumno/proyecto_spotify/raw_data/hdfs dfs -cat /user/alumno/proyecto_spotify/raw_data/spotify_data.csv | head -5# Estadísticashdfs dfs -du -h /user/alumno/proyecto_spotify/raw_data/Exploración con comandos HDFS
Section titled “Exploración con comandos HDFS”# Ver primeras líneas (cabecera y primeros registros)hdfs dfs -cat /user/alumno/proyecto_spotify/raw_data/spotify_data.csv | head -20# Contar registros totaleshdfs dfs -cat /user/alumno/proyecto_spotify/raw_data/spotify_data.csv | wc -l# Estadísticas de archivohdfs dfs -stat "Tamaño: %b bytes" \/user/alumno/proyecto_spotify/raw_data/spotify_data.csv# Verificar replicaciónhdfs dfs -stat "Replicación: %r" \/user/alumno/proyecto_spotify/raw_data/spotify_data.csvFASE2: MapReduce - Procesamiento distribuido
Section titled “FASE2: MapReduce - Procesamiento distribuido”Popularidad de Géneros y Evolución Temporal
Section titled “Popularidad de Géneros y Evolución Temporal”Identificar géneros emergentes y su evolución en popularidad