Consulta y visualización de datos#

Procesos en Big Data#

  • Para el NIST Big Data interoperability Framework (NBDIF) - Version 3.0 Final [CG19] (Pág.29), el ciclo de vida del análisis de los datos se compone de cinco fases:

    • Captura de los datos en su formato original. Ingestión de datos (Data Ingestion).

    • Preparación y modelado. Almacenamiento de datos (Data Storage).

    • Análisis y consulta de datos (Data Processing / Data Query).

    • Visualización de los datos. (Data Visualization).

    • Acción con el uso de los mismos.

  • En este apartado se verán las fases de procesamiento, análisis y consulta de datos; y visualización.

Procesamiento, análisis y consulta de datos#

  • Los datos recolectados en la fase anterior serán procesados en este paso.

  • Aquí, el sistema de procesamiento de canalización de datos enruta los datos a un destino diferente, clasifica el flujo de datos y es el primer punto donde puede tener lugar el análisis.

  • Esta es la capa donde las consultas (queries) y el proceso analítico activo se ejecutan.

  • Para ello, los analistas emplean diferentes herramientas y estrategias como, por ejemplo:

    • Modelado estadístico.

    • Algoritmos.

    • Inteligencia artificial (AI).

    • Minería de datos.

    • Aprendizaje automático (ML).

  • Las consultas interactivas para el procesamiento de datos son necesarias y es una zona tradicionalmente dominada por desarrolladores expertos en SQL.

  • Con Hadoop, la ingesta de datos, el almacenamiento, el proceso y el análisis se volvieron fáciles de trabajar cuando se cuenta con una gran cantidad de datos.

  • Para análisis fuera de línea, se utiliza un sistema de procesamiento por lotes simple: Apache Sqoop es la aplicación que se encarga de esto.

  • Transfiere eficientemente datos estructurados entre Apache Hadoop y las bases de datos relacionales.

  • Spark por otro lado, es utilizado mayoritariamente para el análisis y procesamiento de datos en tiempo real.

  • Otra herramienta utilizada es Apache Storm.

  • Otras herramientas a considerar útiles en este proceso son:

  • KNIME hace que la comprensión de datos y el diseño de flujos de trabajo de ciencia de datos y componentes reutilizables sean accesibles para todos.

  • Apache Mahout es un framework distribuido de álgebra linear y Scala DSL matemáticamente expresivo.

  • Weka 3: Machine Learning Software en Java para hacer análisis de manera simple.

Apache Scoop (Attic)#

Apache Attic https://attic.apache.org/ es utilizado por la Apache Software Foundation como espacio para los proyectos que ya han llegado a su final de vida y no cuentan con más desarrollo ni mantenimiento.

  • Apache Scoop transfiere eficientemente datos estructurados entre Apache Hadoop y las bases de datos relacionales.

  • Se puede usar Sqoop para importar datos desde un sistema de administración de bases de datos relacionales (RDBMS) como MySQL u Oracle o un mainframe al sistema de archivos distribuidos de Hadoop (HDFS), transformar los datos en Hadoop MapReduce y luego exportar los datos nuevamente a un RDBMS.

  • Apache Sqoop también puede ser utilizado para extraer datos de Hadoop y exportarlos a almacenes de datos estructurados externos.

  • Apache Sqoop trabaja con bases de datos relacionales como Teradata, Netezza, Oracle, MySQL, Postgres, y HSQLDB.

  • Sqoop automatiza la mayor parte de este proceso, basándose en la base de datos para describir el esquema de los datos que se importarán.

  • Sqoop utiliza MapReduce para importar y exportar los datos, lo cual proporciona procesamiento en paralelo y tolerancia a fallos.

Motores de consultas#

  • Los motores de consultas SQL (SQL query engine) permiten realizar consultas a grandes cantidades de datos (terabytes o petabytes) en distintas fuentes simultáneamente.

  • Las consultas pueden localizar datos, actualizarlos, agregarlos, etc.

  • Entre las herramientas más populares de esta categoría se encuentran Spark, Impala, Hive, y Presto/Trino; entre otras.

Apache Spark#

  • Framework de procesamiento paralelo y de código abierto para ejecutar aplicaciones de análisis de datos a gran escala en sistemas agrupados.

  • Utilizado por más del 80% de las empresas Fortune 500 y miles de otras empresas en todo el mundo.

  • Fue desarrollado en la University of California, Berkeley, EE.UU.

  • Sus funcionalidades básicas son:

    • Procesamiento de datos en batch/streaming utilizando Python, SQL, Scala, Java o R.

    • Analíticas mediante SQL ejecutando consultas para dashboards e informes de forma más rápida que la mayoría de los data warehouses.

    • Ciencia de datos en escala realizando Exploratory Data Analysis - EDA con petabytes de datos.

    • Machine learning para entrenar algoritmos en un laptop usando el mismo código que luego se utilizará en clústeres de miles de máquinas.

  • También es compatible con un amplio conjunto de herramientas de alto nivel, que incluyen:

    • Spark SQL para SQL y procesamiento de datos estructurados,

    • MLlib para aprendizaje automático,

    • GraphX para procesamiento de gráficos, y

    • Transmisión estructurada para procesamiento incremental y de streaming.

  • Se utiliza para realizar trabajos informáticos con grandes cargas de datos junto a Apache Kafka.

  • Con Spark ejecutándose en Apache Hadoop YARN, los desarrolladores pueden crear aplicaciones para explotar el poder de Spark, obtener información y enriquecer sus cargas de trabajo de ciencia de datos dentro de un único conjunto de datos compartidos en Hadoop.

Apache Impala#

  • Impala eleva el nivel de rendimiento de las consultas SQL en Apache Hadoop al mismo tiempo que conserva una experiencia de usuario familiar.

  • Con Impala, se puede consultar datos, ya sea que estén almacenados en HDFS o Apache HBase, incluidas las funciones SELECT, JOIN y agregadas, en tiempo real.

  • Impala utiliza los mismos metadatos, sintaxis SQL (Hive SQL), controlador ODBC e interfaz de usuario (Hue Beeswax) que Apache Hive, lo que proporciona una plataforma familiar y unificada para consultas en tiempo real o por lotes.

  • Los usuarios de Hive pueden utilizar Impala con algunos pocos ajustes.

Apache Kudu#

  • Apache Kudu es un motor de almacenamiento columnar open source para datos estructurados.

  • Está diseñado y optimizado para análisis de big data en datos que cambian rápidamente o para un rendimiento rápido en consultas analíticas - OLAP.

  • Es distribuido, permite varios tipos de partición de datos y carga compartida en varios servidores.

  • Es parte del ecosistema Hadoop y se integra con frameworks de procesamiento de datos como Spark, Impala, NiFi y MapReduce.

Apache Hive#

  • Apache Hive es una infraestructura de almacenamiento de datos (data warehouse) construida sobre Apache Hadoop para proporcionar resúmenes de datos, consultas ad-hoc y análisis de grandes conjuntos de datos.

  • Los analistas de datos usan Hive para consultar, resumir, explorar y analizar esos datos, y luego convertirlos en información empresarial procesable.

  • El software de almacenamiento de datos Apache Hive facilita la lectura, escritura y administración de grandes conjuntos de datos que residen en almacenamiento distribuido mediante SQL.

  • La estructura se puede proyectar sobre los datos que ya están almacenados.

  • Se proporciona una herramienta de línea de comandos y un controlador JDBC para conectar a los usuarios a Hive.

  • Proporciona un mecanismo para la estructura del proyecto de ingesta de datos en los datos de Hadoop y para consultar esos datos mediante con un lenguaje tipo SQL llamado HiveQL (HQL).

  • Sus características principales son:

  • Hive-Server 2 - HS2 para multi-client concurrency y autenticación.

  • Provee un repositorio central de metadatos mediante Hive Metastore(HMS) y soporta el almacenamiento en S3, adls, gs, etc. a través de HDFS.

  • Hive ACID provee soporte completo ACID para las tablas ORC e insert only para todos los otros formatos.

Apache Drill#

  • Es un motor SQL para Hadoop, NoSQL y almacenamiento en la nube.

  • Soporta variadas bases de datos NoSQL y sistemas de ficheros:

    • HBase, MongoDB, HDFS, Amazon S3, Azure Blob Storage, Google Cloud Storage, NAS y ficheros locales.

  • Una única consulta puede obtener datos de múltiples bases de datos.

  • Integración con Apache Hive:

    • Consultas en las tablas y vistas, soporte para todos los formatos de ficheros y User-Defined Functions - UDFs.

Presto#

  • Motor SQL desarrollado por Meta (Facebook) para análisis ad-hoc e informes rápidos.

  • Es un motor de consulta SQL distribuido de código abierto que ejecuta consultas analíticas interactivas en fuentes de datos de todos los tamaños, desde gigabytes hasta petabytes.

  • Meta utiliza Presto para consultas interactivas en varios almacenes de datos internos, incluido su almacén de datos de 300 PB.

  • Más de 1000 empleados de Meta usan Presto diariamente para ejecutar más de 30000 consultas que, en total, escanean más de un petabyte por día.

Trino#

  • Trino es un motor de consulta SQL distribuido diseñado para consultar grandes conjuntos de datos distribuidos en una o más fuentes de datos heterogéneas.

  • Son los fundadores del proyecto Presto que han tenido que cambiarle el nombre por cuestiones legales.

Otras herramientas: Hue#

  • Hue es un asistente open source de SQL para bases de datos y data warehouses.

  • Provee un editor de código SQL con componentes y autocompletado que permite conectarse a cualquier base de datos.

Alluxio#

  • Alluxio es una plataforma de orquestación de datos (data orchestration platform) que habilita la separación entre las capas de cómputo y almacenamiento.

  • Brinda velocidad y agilidad a las cargas de datos en Big Data e inteligencia artificial reduciendo costes gracias a la eliminación de datos duplicados.

  • Permite también trabajar con object stores.

Analítica de datos en tiempo real#

Apache Doris#

  • Apache Doris es un moderno data warehouse open source para analíticas en tiempo real.

  • Puede ser utilizado para realizar informes de análisis, consultas ad-hoc, unificar almacenes de datos o acelerar consultas a lagos de datos.

  • Permite construir aplicaciones para análisis del comportamiento del usuario, A/B testing, log analysis, análisis de perfiles de usuario, o de pedidos de ventas.

Apache Druid#

  • Apache Druid es una base de datos diseñada para análisis en tiempo real (consultas OLAP) en grandes conjuntos de datos.

  • Se especializa en casos de uso donde la ingesta de datos en tiempo real, un desempeño veloz en las consultas y una disponibulidad alta son importantes.

Apache Kylin#

  • Apache Kylin es un almacén de datos analíticos distribuido de código abierto para Big Data.

  • Diseñado para proporcionar capacidad OLAP (procesamiento analítico en línea) para Big Data.

  • Al renovar el cubo multidimensional y la tecnología de precálculo en Hadoop y Spark, Kylin puede lograr una velocidad de consulta casi constante independientemente del volumen de datos en constante crecimiento.

  • Al reducir la latencia de las consultas de minutos a menos de un segundo, Kylin devuelve la analítica en línea a los grandes datos.

Apache Pinot#

  • Apache Pinot es una plataforma de código abierto de analítica en tiempo real ideal para obtener información ultrarrápida, escalabilidad sin esfuerzo y decisiones rentables basadas en datos.

  • Fuente: https://pinot.apache.org/.

Vertica#

  • Vertica es un almacén de datos (data warehouse) de análisis unificado.

  • Ha sido diseñado para ofrecer velocidad, escalabilidad y aprendizaje automático integrado para cargas de trabajo analíticamente intensivas.

Perfilado de datos y linaje#

  • Perfilado de datos y linaje (data profiling and lineage) son técnicas que permiten identificar la calidad de los datos y su ciclo de vida durante las varias fases que percorren.

  • Es importante capturar los metadatos en cada paso del proceso para que puedan ser utilizados posteriormente para verificación y personalización.

  • Algunas aplicacione disponibles: Talend, Hive, Pig.

  • Talend Data Fabric es un conjunto de aplicaciones nativas de la nube que lidera la industria en integración y gestión de datos:

    • Identifica elementos de datos.

    • Realiza un seguimiento hasta el origen de los datos.

    • Combina fuentes de datos y enlaces a los mismos.

    • Crea un mapa para cada sistema y un mapa maestro de la imagen completa.

    • Extraído de: https://www.talend.com/.

  • OpenLineage es un framework open source para la recopilación y el análisis del linaje de datos.

  • Permite una recopilación consistente de metadatos de linaje, creando una comprensión más profunda de cómo se producen y utilizan los datos.

  • se integra con Airflow, Spark y dbt.

Calidad de los datos#

  • La ingesta de datos se considera de alta calidad si cumple con las necesidades comerciales y satisface el uso previsto, de modo que sea útil para tomar decisiones de negocio con éxito.

  • Por lo tanto, es un paso importante establecer la dimensión de mayor interés e implementar métodos para lograrla.

Limpieza de datos#

  • La limpieza de datos (data cleansing) significa implementar varias soluciones para corregir datos incorrectos o corruptos.

Prevención y pérdida de datos#

  • Deben existir políticas para asegurarse de que se resuelvan las lagunas en la pérdida de datos.

  • La identificación de dicha pérdida de datos necesita un control cuidadoso y procesos de evaluación de la calidad en el flujo del proceso de ingesta de datos.

Visualización de datos#

  • La fase de visualización o presentación es donde los usuarios pueden sentir el VALOR de los DATOS.

  • La visualización de hallazgos ayuda a tomar mejores decisiones de negocios.

  • Aquí se generan informes por tipo de audiencia (comerciales, marketing, estrategia, técnicos, etc).

  • Si bien está diseñado para manejar y almacenar grandes volúmenes de datos, Hadoop y otras herramientas no tienen disposiciones integradas para la visualización de datos y la distribución de información, lo que no permite que los usuarios finales del negocio puedan consumir fácilmente esos datos en la canalización de ingesta de datos.

  • Los paneles personalizados son útiles para crear vistas generales únicas que presentan los datos de manera diferente.

  • Puede mostrar la información de la aplicación web y móvil, la información del servidor, los datos de métricas personalizadas y los datos de métricas de complementos, todo en un único tablero personalizado.

  • Los paneles en tiempo real guardan, comparten y comunican información.

  • Ayuda a los usuarios a generar preguntas al revelar la profundidad, el rango y el contenido de los almacenes de datos.

  • Los paneles de visualización de datos siempre cambian a medida que llegan nuevos datos.

  • Los tableros pueden contener múltiples visualizaciones de múltiples conexiones una al lado de la otra.

  • Se pueden crear, editar, filtrar y eliminar tableros rápidamente y moverlos y cambiar su tamaño y luego compartirlos o integrarlos en su aplicación web.

  • Se puede exportar un tablero como una imagen o utilizando una configuración de archivo tipo JSON.

  • De acuerdo con el NIST Big Data interoperability Framework (NBDIF) - Version 3.0 Final [CG19] (Pág.31) tres son los tipos de visualizaciones que varían en técnicas y en propósito:

    • Visualización exploratoria: técnicas para entender la distribución de los valores en los elementos. Se pueden necesitar también técnicas de agregación o de resumen.

    • Visualización evaluatoria: permite comprender el desempeño y exactitud de un método particular de análisis o machine learning.

      • Los datos pequeños (small data) se refieren a los límites en el tamaño de los conjuntos de datos que los analistas pueden evaluar y comprender por completo.

    • Visualización exploratoria: la presentación de datos complejos de manera fácil para ser entendidos por quienes toman decisiones.

Elastic Stack#

  • En sus inicios el ELK Stack se componía de las aplicaciones Elasticsearch, Logstash, Kibana, y Beats.

  • Actualmente se lo conoce como Elastic Stack, nombre que le permite agregar nuevas funcionalidades.

  • Conocido por sus API REST simples, naturaleza distribuida, velocidad y escalabilidad, Elasticsearch es el componente central de Elastic Stack, un conjunto de herramientas de código abierto para la ingesta, el enriquecimiento, el almacenamiento, el análisis y la visualización de datos.

  • Kibana es la interfaz de usuario gratuita y abierta que permite visualizar los datos.

  • Casos de uso:

  • Búsqueda de aplicaciones.

  • Búsqueda de sitio web.

  • Búsqueda Empresarial.

  • Logging y analíticas de log.

  • Métricas de infraestructura y monitoreo de contenedores.

  • Monitoreo de rendimiento de aplicaciones.

  • Análisis y visualización de datos geoespaciales.

  • Analítica de Seguridad.

  • Analítica de Negocios.

Elasticsearch#

  • Elasticsearch es un motor de análisis y búsqueda de código abierto distribuido para todo tipo de datos, incluidos textuales, numéricos, geoespaciales, estructurados y no estructurados.

  • Elasticsearch se basa en Apache Lucene y fue lanzado por primera vez en 2010 por Elasticsearch N.V. (ahora conocido como Elastic).

  • La ingesta de datos es el proceso mediante el cual estos datos sin procesar se analizan, normalizan y enriquecen antes de indexarlos en Elasticsearch.

  • Los datos sin procesar fluyen hacia Elasticsearch desde una variedad de fuentes, incluidos registros, métricas del sistema y aplicaciones web.

Apache Lucene#

  • Lucene Core es una biblioteca de Java que proporciona potentes funciones de indexación y búsqueda, así como funciones de corrección ortográfica, resaltado de aciertos y análisis/tokenización avanzados.

  • El subproyecto PyLucene proporciona enlaces de Python para Lucene Core.

  • PyLucene incorpora una VM de Java con Lucene en un proceso de Python.

  • El módulo de Python llamado lucene es generado por máquina por JCC.

  • Lucene Core tiene una serie de proyectos relacionados, entre los cuales se encuentran:

  • Apache Tika: El kit de herramientas Apache Tika detecta y extrae metadatos y texto de más de mil tipos de archivos diferentes (como PPT, XLS y PDF). Todos estos tipos de archivos se pueden analizar a través de una sola interfaz, lo que hace que Tika sea útil para la indexación de motores de búsqueda, el análisis de contenido, la traducción y mucho más.

  • Nutch es un rastreador web altamente extensible, altamente escalable, maduro y listo para producción que permite una configuración detallada y se adapta a una amplia variedad de tareas de adquisición de datos.

  • La biblioteca Apache OpenNLP es un conjunto de herramientas basado en el aprendizaje automático para el procesamiento de texto en lenguaje natural.

  • Admite las tareas más comunes de NLP, como la tokenización, la segmentación de oraciones, el etiquetado de partes del discurso, la extracción de entidades nombradas, la fragmentación, el análisis y la resolución de correferencias.

  • Apache Mahout es un framework distribuido de álgebra linear y Scala DSL que tiene como objetivo crear aplicaciones de aprendizaje automático (ML) escalables y eficaces.

Apache Solr#

  • Solr es un servidor de búsqueda de alto rendimiento creado con Lucene Core.

  • Solr es altamente escalable y proporciona indexación, búsqueda y análisis distribuidos totalmente tolerantes a fallas.

  • Expone las características de Lucene a través de interfaces JSON/HTTP fáciles de usar o clientes nativos para Java y otros lenguajes.

Logstash#

  • Logstash se usa para agregar y procesar datos y enviarlos a Elasticsearch.

  • Es una canalización (pipeline) de procesamiento de datos del lado del servidor de código abierto que le permite ingerir datos de múltiples fuentes simultáneamente y enriquecerlos y transformarlos antes de que se indexen en Elasticsearch.

  • Un índice de Elasticsearch es una colección de documentos que están relacionados entre sí.

  • Elasticsearch almacena datos como documentos JSON.

  • Cada documento correlaciona un conjunto de claves (nombres de campos o propiedades) con sus valores correspondientes (cadenas, números, booleanos, fechas, matrices de valores, geolocalizaciones u otros tipos de datos).

  • Elasticsearch utiliza una estructura de datos denominada índice invertido, que está diseñada para permitir búsquedas de texto completo muy rápidas.

  • Un índice invertido enumera cada palabra única que aparece en cualquier documento e identifica todos los documentos en los que aparece cada palabra.

  • La indexación se inicia con la API de índice, a través de la cual puede agregar o actualizar un documento JSON en un índice específico.

  • Durante el proceso de indexación, Elasticsearch almacena documentos y crea un índice invertido para que los datos del documento se puedan buscar casi en tiempo real.

  • Una vez indexados en Elasticsearch, los usuarios pueden ejecutar consultas complejas en sus datos y usar agregaciones para recuperar resúmenes complejos de sus datos.

  • Desde Kibana, los usuarios pueden crear potentes visualizaciones de sus datos, compartir paneles y administrar el Elastic Stack.

Kibana#

  • Kibana es una herramienta de visualización y gestión de datos para Elasticsearch que brinda histogramas en tiempo real, gráficos circulares y mapas.

  • Kibana también incluye aplicaciones avanzadas, como Canvas, que permite a los usuarios crear infografías dinámicas personalizadas con base en sus datos, y Elastic Maps para visualizar los datos geoespaciales.

  • Elasticsearch soporta una variedad de lenguajes de programación facilitando clientes para:

  • Java.

  • JavaScript (Node.js).

  • Go.

  • .NET (C#).

  • PHP.

  • Perl.

  • Python.

  • Ruby.

  • Cuenta además con herramientas para la línea de comandos:

elasticsearch-certgen elasticsearch-certutil elasticsearch-croneval elasticsearch-keystore elasticsearch-migrate

elasticsearch-node elasticsearch-saml-metadata elasticsearch-setup-passwords elasticsearch-shard elasticsearch-syskeygen elasticsearch-users

  • Un documento en Kibana puede contener varios campos con valores:

{ “name” : “Elastic”, … : }

Tutorial Elasticsearch#

Salesforce, Amazon, Google y Microsoft#

  • Otras herramientas de modelización y visualización de datos son las proporcionadas por Salesforce, Amazon, Google y Microsoft.

  • Salesforce adquirió Tableau y google hizo lo mismo con Looker en 2019.

  • La reciente integración entre estos productos le permitirán al usuario modelar datos con LookML y usar Tableau, o Looker para explorar ese modelo.

  • Tableau es una plataforma de análisis de datos que puede ser implementada en la nube, localmente o integrada de forma nativa con Salesforce CRM.

  • Contiene capacidades de IA/ML completamente integradas, gobernanza y gestión de datos, narración visual y colaboración.

  • Google Looker conecta, analiza, y visualiza datos en ambientes multicloud.

  • Looker puede facilitar la creación de una plataforma de exploración de datos que facilite el acceso a datos de una manera significativa e intuitiva para la organización.

  • Microsoft cuenta por su parte con PowerBI.

  • PowerBI se conecta a las fuentes de datos, los modela y presenta en paneles con facilidad.

  • Permite obtener respuestas rápidas y con tecnología de IA a preguntas empresariales.

Apache Superset#

  • Sus características principales son:

  • Más de 40+ visualizaciones pre-instaladas.

  • Soporte para drag-and-drop y consultas SQL.

  • Uso de cache para datos que acelera la carga de informes y gráficos.

  • Plantillas Jinja para crear dashboards interactivos.

  • Plantillas CSS para personalizar gráficos e informes.

  • Capa semántica de transformaciones con el lenguaje SQL.

  • Filtros avanzados para análisis de datos más profundos.

  • Acceso a nuevas funcionalidades mediante feature flags.

Tutorial Apache Superset#

Monitoreo de datos#

  • El seguimiento continuo de los datos es una parte importante de los mecanismos de gobernanza.

  • Apache Flume es útil para procesar datos de registro.

  • Apache Storm se utiliza para el monitoreo de operaciones

  • Apache Spark sirve para transmisión de datos, procesamiento de gráficos y aprendizaje automático.