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.
El patrón Fork-Join se implementa utilizando la biblioteca rayon para procesamiento paralelo en Rust. La implementación maneja dos escenarios principales:
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
Descargar el dataset de Steam Reviews 2021
cargo run <input-path> <num-threads> <output-file-name>Procesar un directorio con múltiples archivos CSV:
cargo run ./data 8 outputProcesar un archivo CSV específico:
cargo run ./data/steam_reviews.csv 4 outputProcesar 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<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
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
}
]
}
]
}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
Para más detalles sobre los requerimientos, https://concurrentes-fiuba.github.io/2025_1C_tp1.html