Nota sobre rutas absolutas: Debido a que algunos de los archivos utilizados en el proyecto eran muy pesados para ser subidos al repositorio, utilizamos rutas absolutas en los siguientes programas: Main.java, freqAnalyzer.java
El dataset utilizado en este proyecto:
https://www.kaggle.com/datasets/jerseyneo/reddit-adhd-dataset
Descomprimimos el archivo zip y de los archivos csv, estaremos utilizando el archivo ADHD-comment.csv
Main.java : Actualizar la ruta al dataset a preprocesar (en este caso ruta absoluta del archivo ADHD-comment.csv que descargamos), y la ruta al directorio donde se guardará el dataset preprocesado (las rutas se almacenan en las variables rawDataset y finalDataset, respectivamente).
/ConcurrenciaProyecto/Preprocesamiento/src/preprocesamiento/Main.java
-
Correr programa de Preprocesamiento (podemos correrlo en NetBeans), luego de haber actualizado las rutas necesarias.
-
Abrimos una ventana de la terminal e inciamos Hadoop con los siguientes comandos:
cd /ruta_a_hadoop
start-all.sh
- Creamos una carpeta llamada Dataset donde subiremos el dataset preprocesado:
hadoop fs -mkdir /Dataset
hadoop fs -put /ruta_a_dataset_preprocesado/DatasetFinal.txt /Dataset
- Abrimos una nueva ventana de la terminal donde iremos al directorio que contiene la carpeta WordCount y correremos los siguientes comandos:
cd /ruta_al_proyecto/ConcurrenciaProyecto/WordCount
export HADOOP_CLASSPATH=$(hadoop classpath)
Para verificar que se hizo exitosamente, corremos: echo $HADOOP_CLASSPATH
- Creamos dos carpetas donde se guardarán los outputs de los WordCounters:
hadoop fs -mkdir /Output
hadoop fs -mkdir /OutputPares
Nota: Necesitaremos compilar los programas de WordCount con la versión 8 de Java.
/ConcurrenciaProyecto/WordCounter/WordCount.java
- Compilar WordCount.java con el siguiente comando:
/ruta_a_java_version_8/javac -classpath ${HADOOP_CLASSPATH} -d '/ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/clases' '/ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/WordCount.java'
- Juntar el output en un solo archivo jar:
jar -cvf wordcount.jar -C clases/ .
- Correr Word Counter
hadoop jar /ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/wordcount.jar WordCount /Dataset /Output
/ConcurrenciaProyecto/WordCounter/WordCount.java
Repetimos el procedimiento, esta vez para el WordCount de pares de palabras:
/ruta_a_java_version_8/javac -classpath ${HADOOP_CLASSPATH} -d '/ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/clasesPares' '/ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/WordCountPares.java'
jar -cvf wordcountpares.jar -C clasesPares/ .
hadoop jar /ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/wordcountpares.jar WordCountPares /Dataset /OutputPares
Al terminar de correr ambos programas de WordCount, descargamos los outputs desde Hadoop, les ponemos un nombre que los diferencie y les agregamos la extensión .txt (se encuentran en las carpetas Output y OutputPares con el nombre de part-r-00000.
Luego, detenemos los daemons del cluster de Hadoop corriendo el siguiente comando: stop-all.sh
/ConcurrenciaProyecto/Preprocesamiento/src/preprocesamiento/freqAnalyzer.java
freqAnalyzer.java : Actualizar la ruta a los outputs que acabamos de descargar (las rutas se almacenan en las variables wordcount y wordcountPares, respectivamente).
-
En la clase freqAnalyzer.java existen dos métodos: uno que genera el top de las palabras individuales más frecuentes y el otro genera el top para los pares de palabras más frecuentes. En el main se hace el llamado a los dos métodos.
-
Corremos freqAnalyzer.java (puede ser en NetBeans)
-
¡Fin! 🎉