Skip to content

Este proyecto implementa un procesador paralelo de reviews de Steam que analiza un dataset de reviews de videojuegos para extraer estadísticas

Notifications You must be signed in to change notification settings

c-gonzalez-a/2025-1C-ProgramacionConcurrente

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Procesador Paralelo de Reviews de Steam

Review Assignment Due Date

Descripción del Proyecto

Este proyecto implementa un procesador paralelo de reviews de Steam que analiza un dataset de reviews de videojuegos para extraer estadísticas sobre:

  • Top 3 juegos con más reviews, incluyendo:

    • Total de reviews por juego
    • Top 3 idiomas por juego
    • Review más votada por idioma
  • Top 3 idiomas con más reviews, incluyendo:

    • Total de reviews por idioma
    • Top 10 reviews más votadas por idioma

El proyecto utiliza el modelo Fork-Join para procesar grandes volúmenes de datos de manera eficiente y paralela.

Modelo Fork-Join Implementado

El patrón Fork-Join se implementa utilizando la biblioteca rayon para procesamiento paralelo en Rust. La implementación maneja dos escenarios principales:

Fork-Join para Archivo

Cuando se procesa un archivo CSV, el sistema:

Fork (División del trabajo):

  • Divide el archivo en chunks de 64MB cada uno

Join (Combinación de resultados):

  • Combina todos los resultados parciales en un resultado final
  • Utiliza el método merge() para agregar estadísticas de cada chunk

Preparación del Dataset

Descargar el dataset de Steam Reviews 2021

Ejecución

Comando Básico

cargo run <input-path> <num-threads> <output-file-name>

Ejemplos de Uso

Procesar un directorio con múltiples archivos CSV:

cargo run ./data 8 output

Procesar un archivo CSV específico:

cargo run ./data/steam_reviews.csv 4 output

Procesar con diferentes números de threads:

# Usando 2 threads
cargo run ./data/steam_reviews.csv 2 output

# Usando 10 threads
cargo run ./data/steam_reviews.csv 10 output

Parámetros

  • <input-path>: Ruta al archivo CSV o directorio con archivos CSV
  • <num-threads>: Número de threads para procesamiento paralelo
  • <output-file-name>: Nombre del archivo JSON de salida

Estructura de Salida

El programa genera un archivo JSON con la siguiente estructura:

{
  "padron": 105661,
  "top_games": [
    {
      "game": "Nombre del Juego",
      "review_count": 12345,
      "languages": [
        {
          "language": "English",
          "review_count": 1000,
          "top_review": "Texto de la review más votada",
          "top_review_votes": 500
        }
      ]
    }
  ],
  "top_languages": [
    {
      "language": "English",
      "review_count": 50000,
      "top_reviews": [
        {
          "review": "Texto de la review",
          "votes": 1000
        }
      ]
    }
  ]
}

Video explicativo al docente corrector por la reentrega

Link: https://drive.google.com/file/d/1tN5n_Fb38_uaR4qP1mc0VG_SmCPaASN4/view?usp=sharing

Link al notion que muestra las correcciones: https://www.notion.so/Reentrega-TP1-Programacion-Concurrente-1f478847c24880b6b012ce0f746fd58a?source=copy_link

Enunciado Original

Para más detalles sobre los requerimientos, https://concurrentes-fiuba.github.io/2025_1C_tp1.html

About

Este proyecto implementa un procesador paralelo de reviews de Steam que analiza un dataset de reviews de videojuegos para extraer estadísticas

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages