Explorando Stream Analytics
Cuando hablamos de las últimas innovaciones, es inevitable pensar en el Internet of Things, o más bien conocido por sus siglas, IoT . Sobre los cimientos del IoT residen gran cantidad de dispositivos y tecnologías que no suponen ninguna novedad, sin embargo, su propósito es proporcionarles una capa de conectividad digital a través de la red por excelencia, Internet, aportándoles de esta manera más inteligencia.
Por tanto, el IoT supone una convergencia entre el mundo de los dispositivos cotidianos e Internet, y su idea principal es tener todos nuestros dispositivos conectados a la red, de manera se puedan comunicar entre sí.
Por ello, resulta esencial utilizar herramientas que analicen en tiempo real todos los datos que producen los aparatos que nos rodean. Con Stream Anaytics podrás implementar soluciones para obtener la información que generan tus dispositivos, sensores o aplicaciones en tiempo real. Así, actuarás como supervisor y administrador, de manera remota.
Configuración de Stream Analytics
En este artículo vamos a ver cómo procesar datos en tiempo real a través de un Blob Storage, es decir, una vez hayamos ejecutado el Stream Analytics, subiremos un archivo a nuestro Blob Storage, que servirá como entrada. Le aplicaremos una función, y a continuación almacenaremos la salida de la función en otro contenedor Blob Storage.
Lo primero que haremos es crear una cuenta en Azure.
Una vez tengamos nuestra cuenta preparada, podemos empezar a crear y configurar el Stream Analytics. Desde el panel de la izquierda, añadimos un nuevo elemento “ +” apoyándonos en el buscador:
A continuación, tras la búsqueda seleccionamos el Stream Analytics Job - Crear:
Ahora tendrás que asignarle un nombre y un grupo de recursos. En mi caso, le he asignado un grupo de recursos que ya tenía creado, pero si tu cuenta de Azure es nueva, necesitarás uno nuevo. Selecciona la opción de Crear Nuevo, introdúcele un nombre y solucionado.
Podrás acceder a los recursos que crees en el portal de Azure desde el botón que está debajo del “+” . Así pues, abrimos el Stream Analytics y nos encontramos con la siguiente interfaz:
En los siguientes pasos configuraremos la entrada, salida y la función a aplicar.
Configuración del almacenamiento
En primer lugar, necesitaremos una cuenta de almacenamiento de tipo Blob Storage y a continuación crear dos contenedores. Puedes consultar este artículo en el que se explica cómo crear y manejar contenedores Blob Storage desde el Azure Storage Explorer.
Una vez tenemos el almacenamiento listo, volvemos al Stream Analytics y empezamos configurando la entrada:
En mi caso, he introducido un nombre, he especificado que quiero usar un Almacenamiento Blob, y tras introducir mis credenciales, le asigno un contenedor ya creado, que he llamado contenedorblobs. Le he especificado en el Formato de serialización de eventos, que va a estar en formato CSV. Podrás usar también el formato JSON o Avro.
La configuración de la salida es muy similar. Introducimos un nombre, especificamos el almacenamiento que queremos, en nuestro caso Almacenamiento de blobs, indicamos el contenedor de salida y elegimos el formato de almacenamiento de tipo CSV.
Si todo ha ido bien, en “Información General” te debería aparecer una entrada y una salida:
Ejecución de Stream Analytics
El siguiente paso es configurar el apartado < > Consulta. Con esto lo que hacemos es aplicar una query a los datos de entrada. En este ejemplo simplemente seleccionamos la columna Text del contenedor de entrada y la enviamos al de salida:
Le damos al botón de Iniciar y especificamos que queremos empezar el Stream Analytics ahora, ya que lo podemos programar para que comience en el momento que nos venga mejor. Por tanto, nuestro panel tendría que tener este aspecto:
Ahora si, desde el Azure Storage Explorer introducimos un archivo .CSV, que en mi caso se llama book2.csv y poco después aparecerán en el portal de Azure tres entradas, correspondientes a las tres líneas que tiene mi archivo.
La mejor opción para comprobar si nuestro sistema funciona correctamente es ir al contenedor de salida y ver que efectivamente se creó un nuevo archivo con los datos del primero.
Funciones Agregadas
Las funciones agregadas pueden realizar cálculos directamente sobre los datos que le entran, devolviendo un único valor. Además, estas funciones son determinísticas, de modo que devuelven el mismo valor cada vez que las llamamos con las mismas entradas. En este ejemplo vamos a probar la función MAX, aunque hay otras más:
AVG | COUNT | Collect |
CollectTOP | MAX | MIN |
Percentile_Cont | Percentile_Disc | STDEV |
STDEVP | SUM | TopOne |
VAR | VARP |
Ventanas Temporales
En muchos escenarios se analizan datos en tiempo real y es necesario establecer una ventana temporal para especificar cuándo quiero procesar estos datos. Este procesado se aplicará al final de cada ventana, sobre todos los datos recogidos en ese intervalo de tiempo.
Existen varios tipos de ventanas : Trumbling, Hopping y Sliding. Para este ejemplo utilizaremos la Trumbling, que consiste en un conjunto de intervalos de tamaño fijo, no superpuestos y contiguos. En nuestro caso, crearemos una ventana de 5 minutos:
Cargamos la nueva consulta en el Stream Analytics:
SELECT MAX (Views) AS allEvents
INTO articleOutput
FROM articleEntry
GROUP BY TumblingWindow(minute,5)
Así, recogeremos eventos cada 5 minutos y los procesaremos al final de este intervalo, filtramos los eventos y seleccionamos el que tenga el campo Views más alto.
Este es un ejemplo de cómo puedes cargar y procesar datos en tiempo real con la herramienta Stream Analytics. En este caso, establecemos ventanas de tiempo de 5 minutos y aplicamos una función agregada (MAX), todo ello mediante entradas y salidas de archivos desde el Storage Explorer. También tenemos la opción de poner queries o incluso funciones dentro de las propias queries.
Daniel Ortiz
Technical Evangelist Intern
@ortizlopez91