... | ... | @@ -127,7 +127,7 @@ En primer lugar, trataremos la descarga de Tweets, para la cual nos hemos apoyad |
|
|
|
|
|
En nuestro código utilizaremos llamadas de forma asíncrona para la descarga del user timeline de distintos usuarios. El uso de control de páginas también se usará para poder obtener todos los Tweets deseados.
|
|
|
|
|
|
#### Descarga de tweets
|
|
|
### Descarga de tweets
|
|
|
|
|
|
Para empezar disponemos de la clase *TwitterCrawler.java* que es la clase principal que se encarga de llamar a métodos de otras clases que descarguen los tweets. El código de la misma es el siguiente:
|
|
|
|
... | ... | @@ -412,7 +412,7 @@ Sin embargo, aun cambiado de opción no podemos evitar las limitaciones. Ahora e |
|
|
http://www.google.co.jp/search?q=506c3b98 or
|
|
|
http://www.google.co.jp/search?q=105d1078
|
|
|
|
|
|
#### Almacenamiento en la base de datos
|
|
|
### Almacenamiento en la base de datos
|
|
|
Una vez que se descargan los tweets se guardan en la base de datos MongoDB, pero siguiendo la estructura del objeto ContentedorTweet. Podemos ver el contenido en *ContenedorTweet:java*.
|
|
|
|
|
|
package tweets_cd;
|
... | ... | @@ -476,7 +476,7 @@ Si falla el anterior comando porque se halla cerrado bruscamente la base de dato |
|
|
Para detener la base de datos de forma limpia, NO debemos utilizar CTRL-C, sino el siguiente comando:
|
|
|
> /home/teleco/cdtools/mongodb/bin/mongod --shutdown --dbpath data
|
|
|
|
|
|
#### Exportación de tweets en .csv
|
|
|
### Exportación de tweets en .csv
|
|
|
|
|
|
Por último, todos los tweets que se encuentran en la base de datos los exportaremos a un fichero con extensión .csv mediante *mongoexport*. El comando que permite hacer esta operación es:
|
|
|
|
... | ... | @@ -484,7 +484,7 @@ Por último, todos los tweets que se encuentran en la base de datos los exportar |
|
|
|
|
|
Indicamos el tipo de objeto de la colección, que en este caso es ContenedorTweet, los campos que queremos en la salida (solo nos interesa el usuario y el mensaje) y la ruta de salida es la que le indiquemos.
|
|
|
|
|
|
#### Automatización en la descarga de tweets
|
|
|
### Automatización en la descarga de tweets
|
|
|
|
|
|
Para automatizar todas las operaciones descritas en este bloque, dentro de la carpeta de scripts, existe uno llamado "tweets.sh", que al ejecutarlo se encarga automáticamente de arrancar la base de datos, ejecutar el código Java, exportar el .csv y finalmente parar la base de datos de forma limpia. El contenido del mismo es:
|
|
|
|
... | ... | @@ -513,7 +513,7 @@ Para automatizar todas las operaciones descritas en este bloque, dentro de la ca |
|
|
|
|
|
De aquí simplemente hacemos notar que para que fucione es necesario cambiar el /home/teleco por el directorio raíz correspondiente y seguir la estructura de ficheros que hemos comentado.
|
|
|
|
|
|
#### Aplicación práctica en el análisis
|
|
|
### Aplicación práctica en el análisis
|
|
|
Aunque se ha podido comprobar que el dataset de tweets se puede conseguir con cualquier tipo de datos, lo que dota de mayor extensibilidad al programa, la aplicación con la que se diseñó este bloque es la de descargar tweets de distintas entidades a nivel mundial, que tuvieran influencia para que sus menciones a otras fueran relevantes.
|
|
|
|
|
|
De este modo, fue elaborada una lista de entidades con sus respectivas cuentas en twitter. Dichas cuentas fueron escritas en el fichero *cuentas\_twitter.txt* y se obtuvieron unos 81000 tweets tras superar en 2 ocasiones el límite de los 36000 tweets que comentamos. La lista de entidades usada fue la siguiente:
|
... | ... | @@ -794,7 +794,7 @@ El map, será el encargado de procesar el fichero .csv que exportamos mediante * |
|
|
|
|
|
El map irá tomando este fichero línea a línea y separará al encontrar "," el usuario del mensaje. Tomará la primera parte como usuario y el resto como mensaje (para prevenir de que haya "," dentro del mensaje). Después buscará si existe alguna coincidencia con las palabras que teníamos para cada una de las empresas y si la hay se realizará una llamada al método llamado *puntuacion*, que devolverá el número de puntos según lo que lea en el fichero *cuentas\_valor.txt*. Si no se crea el fichero o el usuario no aparece en el mismo, se dará como puntuación '1' por defecto. Una vez obtenida la puntuación, se guardará el nombre de la compañía y los puntos en el contexto que utilizará posteriormente el Reducer que obtendrá los resultados finales.
|
|
|
|
|
|
#### Puesta en marcha
|
|
|
### Puesta en marcha
|
|
|
|
|
|
Para poder probar esta parte, lo primero será arrancar el namenode, que gestiona el sistema de ficheros y regula el acceso de los clientes y el datanode, que guarda los bloques en los que se dividen los ficheros (puede haber varios datanodes).
|
|
|
|
... | ... | @@ -875,3 +875,7 @@ Una vez ejecutado el script, podremos ya obtener los resultados de qué compañ |
|
|
|
|
|
# BLOQUE III: PRESENTACIÓN DE RESULTADOS EN HTML
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|