Está en la página 1de 5

Spring XD, el Spring Roo del BigData

Rate This

Estoy preparando un curso que tengo que dar sobre Spring Batch. Para
poder contar todo de la manera ms actualizada posible me met hace
unos das en la web de Springframework y acced al apartado
de proyectos. Me he llevado la grata sorpresa de que ha aparecido un
nuevo proyecto llamado Spring xd, est en su versin 1.0.3 en el
momento que estoy escribiendo este post pero tiene muy buena pinta.
Por lo que he podido ver a modo de resumen es el Spring-Roo del
BigData. Spring Roo es una herramienta de Spring que, por medio de la
linea de comando, te permite crear aplicaciones Spring sin necesidad de
escribir cdigo Java. En este caso, Spring xd, te permite crear Streams y
redirigirlos a distintos sumideros sink y para tratar la informacin.
Tambin dispone de herramientas de mtricas muy interesantes para
poder preparar un panel de control o estadsitcas sobre los streams que
est manejando.
Una visin rpida de lo que es Spring xd se puede ver en este enlace.
Para poder investigar un poco sobre este proyecto nuevo he tratado de
seguir un ejemplo que me he encontrado en esta pgina. Aunque est
perfectamente explicado el ejemplo en dicha pgina, voy a contarlo por
aqu en mi idioma.
El ejemplo consiste en obtener todos los tweets que se escriben en
tiempo real, generar un stream y preparar estadsticas sobre stos
muy fcil.
Lo primero: descargar la ltima versin de Spring xd desde la pgina
principal. Ah mismo te dan indicaciones de cmo hacerlo.
Una vez descomprimido, tenemos que arrancarlo y preparar el entorno:

<root-install-dir>/spring-xd/xd/xd-singlenode
1
Acto seguido, en una nueva ventana de terminal, arrancamos el shell:
<root-install-dir>/spring-xd/shell/xd-shell
1
Ya tenemos arrancado Spring xd y listo para generar streams.

Para poder realizar este ejemplo, es importante tener cuenta de


desarrollador de Twitter que la puedes obtener aqu.
Ahora que tenemos arrancado Spring xd, en el shell vamos a crear los
streams necesarios:
stream create tweets --definition "twitterstream | log"
1
Ojo, no ejecutes esta lnea, espera a que explique una cosa un poco ms
abajo.
Con esta lnea, estamos creando un stream llamado tweets que coge
todos los tweets (con la fuente source twitterstream) y los saca en la
consola como log.
Para poder ver informacin de los mdulos que proporciona Spring xd,
en el shel, podemos escribir

1module info --name source:twitterstream"


xd:>module info --name sink:log
Information about sink module 'log':
Option Name

1Description
2
Default
Type
----------3
4------------------------------------------------------------------------------------------------- -------5-----expression
the expression to be evaluated for the log content; use '#root' to
6log the full message payload
String
7 level
the log
8level
String
9INFO
name
'xd.sink.')
inputType
consumes

the name of the log category to log to (will be prefixed by


${xd.stream.name} String
how this module should interpret messages it
<none>
MimeType

El shell permite autocompletado con la tecla tab ayuda bastante.


Si os habeis fijado, en la lnea en la que hemos creado el stream falta
indicar las credenciales de desarrollador de Twitter para poder realizar la

consulta. Una vez que disponemos de estos datos, debemos incluirlos en


la lnea de creacin del stream:

stream create tweets --definition "twitterstream --consumerKey='xxx' --consumerSecre


1
Ahora ya puedes ejecutar la lnea de creacin del stream.

Ya tenemos el stream que nos da todos los tweets. Pero no est


arrancado. Primero, vamos a crear el resto de taps (escuchadores de
un stream para crear otros streams a partir del original) para sacar las
estadsticas.

stream create tweetlang --definition "tap:stream:tweets > field-value-counter --fiel


1
Este stream recoge el stream tweets (es un tap) y lo redirige a un
contador de valores de campo field-value-counter indicndole que
queremos hacer recuento de fieldName=lang. Spring xd proporciona
unos servicios REST para obtener las mtricas (http://localhost:9393/).
stream create tweetcount --definition "tap:stream:tweets > aggregate-counter" --dep
1
Creamos otro stream (tap) llamado tweetcount tomando como fuente
el stream tweets. Este tap redirige el stream para que se puedan
comar metricas de contador agregado aggregate-counter.

stream create tagcount --definition "tap:stream:tweets > field-value-counter --field


1
Este nuevo tap llamado tagcount contar los hashtags que se escriban
en twitter para mostrar una grfica del nmero de ocurrencias por
hashtag.

Como habeis podido ver, todos los taps se han creado y desplegado a la
vez deploy. De esta manera ya se han quedado a la escucha del
stream principal tweets que por ahora no hemos desplegado, solo lo
hemos creado.
stream deploy tweets
1
Arrancamos!!!

Podeis ver en la consola de Spring xd como van apareciendo todos los


tweets.

En el shell de Spring xd podemos ver el listado de streams que tenemos


desplegados:
xd:>stream list
Stream Name Stream
Definition

Status
----------1---------------------------------------------------------------------------------------2--------------------------------------------------------------------------------------3 tagcount
tap:stream:tweets > field-value-counter --fieldName=entities.hashtags.tex
4--name=hashtags
deployed
5
tweetcount
tap:stream:tweets > aggregate6counter
7
deployed
tweetlang
tap:stream:tweets > field-value-counter
--fieldName=lang
deployed
tweets
twitterstream --consumerKey='xxx' --consumerSecret='xxx' --accessToken='x

El siguiente paso es coger las mtricas que se estn generando ahora


mismo y ponerlas bonitas.
Para ello vamos a usar un proyecto en GitHub llamado AnalyticsDashboard. Esto es una mini aplicacin web que recoge las metricas
ofrecidas en el servicio REST antes comentado y por medio de la librera
de grficos D3.js mostramos la evolucin de las mtricas en tiempo real
(es muy vistoso).
Primero necesitamos disponer de Spring Boot CLI para arrancar la
aplicacin. Lo descargamos deaqu.
Doy por hecho, que ya te has descargado el proyecto desde GitHub
En el README del proyecto Analytics-Dashboard teneis todo esto mismo
que estoy contando pero en Ingls.
Una vez descomprimido Spring-Boot CLI, nos vamos a la ruta, al
directorio bin y all ejecutamos:
spring run dashboard.groovy
1
Ojo a la ruta de spring y de dashboard.groovy.

Y por arte de magia, nos conectamos


a http://localhost:9889/dashboard.html y veremos los grficos bailar.

También podría gustarte