Skip to content

Prácticas

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.

  • 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.
  1. 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.
  1. 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.
  1. 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?
track_id: Identificador único de Spotify
track_name: Nombre de la canción
artist_name: Nombre del artista principal
artist_count: Número de artistas colaboradores
release_year: Año de lanzamiento
genre: Género musical
popularity: Puntuación de popularidad (0-100)
duration_ms: Duración en milisegundos
danceability: Qué bailable es la canción (0.0-1.0)
energy: Intensidad y actividad (0.0-1.0)
key: Tonalidad musical
loudness: Volumen en dB
mode: Mayor (1) o Menor (0)
speechiness: Presencia de palabras habladas
acousticness: Confianza en ser acústica (0.0-1.0)
instrumentalness: Falta de voces (0.0-1.0)
liveness: Presencia de audiencia
valence: Positividad musical (0.0-1.0)
tempo: BPM (beats por minuto)

Debemos descargar el dataset de kaggle, para ello vamos a utilizar kaggle-cli a través de pip

Terminal window
# Creamos una carpeta para el proyecto
# Creamos un entorno virtual y lo activamos
python3 -m venv venv
source venv/bin/activate
#
pip install kaggle

Vamos 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

Terminal window
kaggle datasets list -s spotify

Descargamos el dataset para la actividad:

Terminal window
kaggle datasets download -d amitanshjoshi/spotify-1million-tracks
unzip spotify-1million-tracks.zip
# Verificamos la estructura de archivos
ls -lh
file *.csv
wc -l *.csv
Terminal window
hdfs dfs -mkdir -p /user/alumno/proyecto_spotify
hdfs dfs -mkdir -p /user/alumno/proyecto_spotify/raw_data
hdfs dfs -mkdir -p /user/alumno/proyecto_spotify/mapreduce_output
hdfs dfs -mkdir -p /user/alumno/proyecto_spotify/hive_warehouse
# Verificar creación
hdfs dfs -ls -R /user/alumno/proyecto_spotify
Terminal window
# Cargar archivo principal
hdfs dfs -put ~/proyecto_spotify/data/spotify_data.csv \
/user/alumno/proyecto_spotify/raw_data/
# Verificar carga y tamaño
hdfs dfs -ls -h /user/alumno/proyecto_spotify/raw_data/
hdfs dfs -cat /user/alumno/proyecto_spotify/raw_data/spotify_data.csv | head -5
# Estadísticas
hdfs dfs -du -h /user/alumno/proyecto_spotify/raw_data/
Terminal window
# Ver primeras líneas (cabecera y primeros registros)
hdfs dfs -cat /user/alumno/proyecto_spotify/raw_data/spotify_data.csv | head -20
# Contar registros totales
hdfs dfs -cat /user/alumno/proyecto_spotify/raw_data/spotify_data.csv | wc -l
# Estadísticas de archivo
hdfs dfs -stat "Tamaño: %b bytes" \
/user/alumno/proyecto_spotify/raw_data/spotify_data.csv
# Verificar replicación
hdfs dfs -stat "Replicación: %r" \
/user/alumno/proyecto_spotify/raw_data/spotify_data.csv

FASE2: 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