Ir al contenido principal

Athena

Athena es un servicio de consultas interactivo para el análisis de datos, no estructurados, semiestructurados y estructurados sobre Amazon S3 bajo SQL estándar. Carece de servidor (Serverless) por lo que no se requiere la administración de infraestructura.

            Athena nos permite trabajar directamente con SQL estándar siendo muy sencillo de implantar y comenzar a trabajar, únicamente disponiendo de habilidades SQL se pueden analizar conjuntos de datos a gran escala de forma rápida y sencilla. Tampoco es necesario realizar trabajos complejos de ETL para preparar los datos para su análisis. En proyectos de Big Data, estas fases pueden llegar a suponer un máximo del 70% del tiempo empleado durante todo el proyecto, respondiendo un 30% a procesos de análisis de datos propiamente dichos.
Se puede integrar de serie con el catálogo de datos de AWS Glue, lo que permite crear un repositorio de metadatos unificado en diversos servicios, rastrear fuentes de datos para descubrir esquemas y rellenar catálogos con definiciones de particiones, tablas nuevas, modificadas y mantener las versiones de los esquemas. Glue también ofrece capacidades de ETL para transformar datos o convertirlo en formatos de columna.

            Athena nos plantea una opción interesante a la hora de comenzar a aplicar un proceso análisis de información sobre un conjunto de datos almacenados en S3, de forma rápida y sencilla empleando técnicas de Data Mining y de esta manera reduciendo los tiempos de desarrollo e implantación al mínimo de enfoques tradicionales. 

La analítica descriptiva consiste en almacenar y realizar agregaciones de datos históricos, visualizándolos de forma que puedan ayudar a la comprensión del estado actual y pasado del negocio. La analítica descriptiva nos cuenta cómo ha funcionado nuestro negocio hasta la fecha. Nos permite, por ejemplo:

  • Detectar qué fármacos tiene una mayor efectividad.
  • Visualizar cómo se distribuyen geográficamente las personas que toman parte en un estudio clínico.
  • Observar la evolución histórica del gasto en fármacos por periodos temporales y/o geográficos.
  • Identificar qué fármacos tienen una mayor efectividad por rango de edades y/o dosis durante el estudio recibidas.
  • Proyecciones de cara a futuro teniendo en cuenta el comportamiento actual.
  • Clusterización, permite fijar sobre la población el conjunto de grupos posibles, en base a sus características pudiendo determinar para un nuevo individuo su cluster determinado por sus propiedades.
  • Calcular y visualización de KPIs, que resumirán el estado del negocio.

¿Cómo funciona ? La analítica descriptiva se basa en trabajar sobre un sistema de almacenamiento donde se encuentran concentrados los datos de negocio. Este sistema puede tratarse de ficheros distribuidos al estilo Hadoop y derivados, bases de datos NoSQL, o sistemas SQL más tradicionales; todo ello dependiendo de la cantidad y complejidad de los datos a manejar. Sobre esta capa de almacenamiento se despliegan tecnologías que permitan el procesado de estos datos de forma que puedan efectuarse las agregaciones y consultas necesarias para el análisis. Es en este punto donde Athena nos permite una integración totalmente transparente, pudiendo procesar casi cualquier fuente de datos.

A la hora de trabajar con Athena nos podemos encontrar los siguientes componentes:
Ø  Los datos subyacentes, representados dentro de un bucket en Amazon S3.
Ø  Los metadatos, tablas y bases de datos, que serán gestionados por medio de AWS Glue Data Catalog.
Ø  Visualización y ejecución de consultas SQL estándar. Podremos trabajar directamente sobre la consola de AWS, por medio de una conexión JDBC y un visor SQL, empleando el API de Athena, o bien AWS CLI, que se trata de una herramienta de código abierto basada en el AWS SDK for Python (Boto) que proporciona comandos para interactuar con los servicios de AWS.

Ø  Herramientas de BI. De todo el abanico de posibilidades una de las más sencillas de usar y que mayor funcionalidades y capacidades de integración aporta es Tableau. Nos permiten desarrollar de una forma visual y totalmente intuitiva desarrollar el análisis de los datos, pudiendo introducir la agregaciones necesarias y la combinación de diferentes fuentes de datos.

Vamos a desarrollar un pequeño ejemplo, para ello vamos a disponer de un pequeño fichero que va a contener información sobre estudios clínicos, estos van a contener información para los diferentes pacientes con sus enfermedades asociadas, fármacos empleados, coste de los fármacos, fechas en las cuales se ha tomado parte, dosis empleadas, etc.
      
      En Athena, las tablas y bases de datos son definiciones de metadatos que definen un esquema para los datos fuente subyacentes. Se utiliza AWS Glue Data Catalog para almacenar y recuperar estos metadatos cuando se ejecutan consultas sobre el conjunto de datos subyacente. Las bases de datos son un agrupamiento lógico de tablas y al igual que las tablas, se consideran metadatos.
Los metadatos de una tabla indican a Athena dónde se encuentran los datos subyacentes (Amazon S3), especificando la estructura de los datos de origen y el esquema de la tabla (nombres de columna, tipos de datos y el nombre de la tabla). AWS Glue tiene características interesantes a la hora de descubrir automáticamente el esquema de los datos y poder extraer, transformar y cargar datos (ETL). 

Lo primero que tendremos que hacer es crear la infraestructura, para ello tendremos que crear un bucket donde vamos a alojar el conjunto de ficheros con los datos. En la siguiente imagen el segundo bucket creado corresponde con el alojamiento de nuestros datos.




Lo siguiente que haremos será crear la estructura del servicio de Athena: la BD junto con las tablas asociadas, en nuestro caso vamos a emplear una única tabla. En la siguiente imagen podemos ver la BD (datosclinicos) y la tabla asociada Historial, con el conjunto de campos definidos, junto con la especificación del formato del fichero a cargar y la localización de S3.




Debemos mencionar que será necesario dotar de todos los permisos necesarios a los usuarios que vayamos a emplear sobre Athena por medio de IAM. Para ello crearemos un usuario que tendrá los siguientes políticas: AmazonS3FullAccess, AmazonAthenaFullAccessSobre los bucket creados en S3, deberemos de aplicar políticas especificas de lectura sobre el bucket de datos y escritura sobre el bucket que emplea Athena para la gestión del servicio.

A la hora de ejecutar una consulta, Athena utiliza Presto como motor SQL distribuido de código abierto. Puede procesar datos de diferentes orígenes de datos, incluido HDFS (Hadoop Distributed File System) y Amazon S3.

            La visualización y ejecución de las consultas, al disponer de conexión por medio de JDBC podremos emplear multitud de herramientas, como por ejemplo DBeaver. Bastará con que descarguemos y configuremos el driver para acceder correctamente y comenzar a trabajar.






            Trabajar con una herramienta de BI, como Tableau, nos aportará una potencia extra en el análisis. Como hemos mencionado antes nos aportará una solución completa de una forma sencilla, nos basta con ir componiendo los datos sobre los que se basa nuestro análisis de forma visual y en caso de que fuera necesario calcular algún agregado de forma sencilla lo podremos desarrollar, como por ejemplo en la imagen adjunta "% Efectividad". En la siguiente imagen estamos analizando la efectividad de los fármacos sobre las diferentes provincias de la comunidad autónoma de Andalucía para un subconjunto de enfermedades (Alergia, Colesterol, Diabetes, Migraña, Problemas Cardíacos y Tumores), de forma anual, realizando un pronóstico de cara a los próximos dos años basado en la media de la información recopilada.










Comentarios

Entradas populares de este blog

Machine Learning soluciones a los problemas

  El aprendizaje automático, o Machine Learning (ML), es una rama de la inteligencia artificial que se centra en la creación de sistemas que pueden aprender y mejorar a partir de la experiencia sin ser explícitamente programados para cada tarea específica. Este campo ha ganado una gran relevancia en los últimos tiempos debido a los avances en el procesamiento de datos, la disponibilidad de grandes volúmenes de información y el incremento en la capacidad de computación y soluciones Cloud. Vamos a explorar algunos conceptos fundamentales de ML, que problemas surgen en la práctica, como podemos limpiar los datos y que técnicas podemos emplear, que es la validación cruzada y algunos desafíos específicos que plantean los algoritmos. Conceptos Fundamentales de Machine Learning Tipos de Aprendizaje Aprendizaje Supervisado : En este tipo de aprendizaje, el modelo se entrena utilizando un conjunto de datos etiquetados, lo que significa que cada ejemplo de entrenamiento viene con una etiquet...

Despliegue de un IDP en Cognito AWS e Integración con una Web en Sprint Boot

  Introducción En este artículo vamos a describir el proceso de despliegue de un proveedor de identidad (IDP) en Amazon Cognito e integración con una aplicación web desarrollada en Sprint. Se detallan las fases necesarias, las tareas principales dentro de cada fase, junto con recomendaciones para asegurar un proceso exitoso. Fases Necesarias Configuración de Cognito En esta fase se creará el pool de usuarios, el grupo de usuarios y las políticas de autenticación y autorización en Cognito. Tareas Principales: Crear un pool de usuarios en Cognito para gestionar las identidades de los usuarios. Definir los atributos de usuario necesarios para la autenticación y autorización. Configurar las políticas de autenticación para determinar los métodos de acceso (por ejemplo, nombre de usuario y contraseña, autenticación social). Crear un grupo de usuarios para agrupar a los usuarios con permisos específicos. Definir las políticas de autorización para determinar los permisos de acceso a los re...

Jhipster (Angular + Spring Boot) + Docker + AWS

En esta entrada vamos a ver la potencia de esta terna, ya sé que no tiene mucho que ver con el blog, pero me ha parecido interesante compartirlo ya que podemos desarrollar nuestra aplicación web basada en Sprint Boot con un frontal Angular sin mucho esfuerzo (más bien en maquetación), dockerizar esta aplicación, gestionarla desde nuestro dockerhub y publicarla en una máquina EC2 en Amazon completa, teniendo acceso a la misma. El objetivo no es profundizar en JHipster, que nos permite desarrollar proyectos por medio de esta herramienta de una forma rápida, ya que nos asila de conocer y profundizar en exceso en las herramientas (siempre que no nos sea necesario) en las que nos podemos basar. JHipster Es una plataforma de desarrollo que nos permite generar, desarrollar y desplegar modernas aplicaciones web y arquitecturas de microservicios. Os recomiendo que echéis un ojo, me ha parecido muy completo, fácil e intuitivo de manejar.  https://www.jhipster....