... | ... | @@ -876,6 +876,95 @@ Una vez ejecutado el script, podremos ya obtener los resultados de qué compañ |
|
|
# BLOQUE III: PRESENTACIÓN DE RESULTADOS EN HTML
|
|
|
--------------------------------------------------
|
|
|
|
|
|
Cuando Hadoop termina de procesar los datos, nos pone el resultado en un fichero llamado part-r-00000 dentro del directorio que le hayamos indicado el ejecutar el .jar (en nuestro caso output). Dichos resultados se podrían ver fácilmente en el terminal, aunque no sería muy visual para el usuario. Por ello, se ha implementado un código en Java que se encarga de tomar el fichero part-r-00000 de Hadoop una vez pasado de hdfs a local y a partir de él construir un fichero HTML que muestre los resultados y extraiga conclusiones.
|
|
|
|
|
|
El código se encuentra en GITLAB dentro de la carpeta "resultado". Únicamente dispone de la clase *Ficheros.java*, que se puede usar únicamente modificando al final la ruta en la que se encuentre el fichero part-r-00000 y en la que se va alojar el fichero con los resultados. Para que funcionen bien los scripts, se recomienda que los ficheros estén dentro del directorio compdist_business_analysis_tweets. El código Java es el siguiente:
|
|
|
|
|
|
import java.io.BufferedReader;
|
|
|
import java.io.File;
|
|
|
import java.io.FileReader;
|
|
|
import java.io.FileWriter;
|
|
|
import java.io.PrintWriter;
|
|
|
|
|
|
|
|
|
public class Ficheros {
|
|
|
|
|
|
|
|
|
public void escribirHTML(String ruta, String dest) {
|
|
|
File archivo = null;
|
|
|
File dest_file = null;
|
|
|
FileReader fr = null;
|
|
|
FileWriter fw = null;
|
|
|
PrintWriter printw = null;
|
|
|
BufferedReader br = null;
|
|
|
|
|
|
try {
|
|
|
archivo = new File(ruta);
|
|
|
dest_file = new File(dest);
|
|
|
fr = new FileReader(archivo);
|
|
|
fw = new FileWriter(dest_file);
|
|
|
printw = new PrintWriter(fw);
|
|
|
br = new BufferedReader(fr);
|
|
|
|
|
|
printw.println("<!DOCTYPE HTML>");
|
|
|
printw.println("<html>");
|
|
|
printw.println("<head><title>Resultados</title><meta charset='UTF-8'></head>");
|
|
|
printw.println("<style type='text/css'> body {background-color:#F0F0F0; color:#000033}</style>");
|
|
|
printw.println("<body>");
|
|
|
printw.println("<h3 style='background-color:#0066CC; color:#FFFFFF; text-align: center'>Análisis de empresas basado en tweets </h3>");
|
|
|
printw.println("<p style='text-align: center;'> Usted acaba de procesar los datos. Estos son sus resultados: </p>");
|
|
|
printw.println("<table border='10' align='center'>");
|
|
|
printw.println("<thead>");
|
|
|
printw.println("<tr>");
|
|
|
printw.println("<td style='background-color:#3399FF;'> Entidad </td>");
|
|
|
printw.println("<td style='background-color:#3399FF;'> Puntuación </td>");
|
|
|
printw.println("</tr></thead>");
|
|
|
// Lectura del fichero
|
|
|
String linea;
|
|
|
String[] ganador = new String[2];
|
|
|
ganador[1] = "-1";
|
|
|
while ((linea = br.readLine()) != null) {
|
|
|
String[] partes = linea.split(" ");
|
|
|
printw.println("<tr><td>"+partes[0]+"</td><td style='text-align:right'>"+partes[1]+"</td></tr>");
|
|
|
if (Integer.parseInt(partes[1])>Integer.parseInt(ganador[1])){
|
|
|
ganador[0] = partes[0];
|
|
|
ganador[1] = partes[1];
|
|
|
}
|
|
|
}
|
|
|
printw.println("</tbody></table>");
|
|
|
printw.println("<p style='text-align:center';> La entidad con mayor éxito según el estudio es " + ganador[0]+".");
|
|
|
printw.println("</body></html>");
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
} finally {
|
|
|
// En el finally cerramos el fichero, para asegurarnos
|
|
|
// que se cierra tanto si todo va bien como si salta
|
|
|
// una excepcion.
|
|
|
try {
|
|
|
if (null != fr) {
|
|
|
fr.close();
|
|
|
printw.close();
|
|
|
fw.close();
|
|
|
}
|
|
|
} catch (Exception e2) {
|
|
|
e2.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args){
|
|
|
Ficheros f = new Ficheros();
|
|
|
f.escribirHTML("/home/teleco/compdist_business_analysis_tweets/part-r-00000", "/home/teleco/compdist_business_analysis_tweets/resultados.html");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
## SCRIPT PARA LA AUTOMATIZACIÓN COMPLETA
|
|
|
--------------------------------------------
|
|
|
Además de los scripts que ya se han ido comentando, existe otro llamado ./script.sh, que directamente se encarga de realizar todos los pasos para la obtención de los resultados, es decir que una vez arrancado hadoop, si se ejecuta, éste se encargará de descargar los tweets, almacenarlos en MongoDB, generar el .csv, procesarlo con Hadoop, exportar los resultados, pasarlos a HTML y abrir un navegador con los mismos. El código es básicamente una concatenación del ./tweets.sh y el ./hadoop.sh; por lo que los cambios necesarios para que funcione son los mismos que se describieron con anterioridad.
|
|
|
|
|
|
## RESULTADOS
|
|
|
Como nuestro cometido era conocer quién de las cuatro compañías entre Amazon, Apple, Google y Microsoft tenía más valoración, descargamos los 81000 tweets que comentamos y los procesamos con Hadoop según lo ya descrito. Finalmente estos son los resultados obtenidos:
|
|
|
|
|
|
|
|
|
|