Notebooks Procesando y representando datos en un mapa Leaflet con los Notebooks Sofia2

Los Notebooks Sofia2 (basados en el proyecto open-source Apache Zeppelin) permiten a los científicos de datos crear diferentes modelos y algoritmos desde el Control Panel de la plataforma Sofia2. Desde este entorno web los Data Scientists pueden cargar datos a HDFS, procesarlos con Spark, Spark o Python, consultarlos con HIVE, visualizarlos de diferentes formas y además de todo esto manejar las ontologías Sofia2 desde este entorno.

En este ejemplo de uso de los Notebooks vamos a ver cómo traernos un fichero de un sitio externo, procesarlo con Spark y representar los datos procesados en un mapa OpenStreetMap con Leaflet.

Concretamente estamos hablando de un fichero que ofrece el servicio OpenData del gobierno francés (https://www.data.gouv.fr/fr/) y que contiene los datos de las estaciones de recarga eléctrica de Francia

https://www.data.gouv.fr/fr/datasets/fichier-consolide-des-bornes-de-recharge-pour-vehicules-electriques-irve/

El fichero tiene este aspecto:

Comenzaremos por descargar el fichero hacia el directorio home de nuestro usuario:

Lo siguiente es subir este fichero de nuestro directorio local al sistema de ficheros HDFS de nuestro cluster Hadoop

Una vez en HDFS ya puedo manejar los datos con Spark, en este caso para procesar el CSV usaré la librería com.databricks.spark-csv. Para cargarla en el classpath de Spark lo más sencillo es hacer esto:

Y de esta forma tan sencilla puedo convertir el CSV almacenado en HDFS (load(“/examples/IRVE-201510.csv”)) a un DataFrame (df) y de ahí a una tabla persistente (df.write.saveAsTable)

Y una vez tengo la tabla ya puedo consultar los datos de esta de forma muy sencilla:

Además de representarlos en diferentes formatos:

Finalmente haremos la consulta que queremos representar en el mapa:

Tras esto voy a convertir los datos de la consulta a JSON para poder representarlos fácilmente, para esto usaré la librería Gson.

Haré la consulta, mapeando las columnas de los datos obtenidos a los nombres que quiero usar en el JSON:

Los datos tienen esta pinta:

Y ya solo me queda hacer el HTML+JS para pintar mi mapa, en Zeppelin para incrustar un HTML basta con empezar el párrafo con:

Mi HTML tiene este aspecto:

En él podemos ver que estamos usando Thunderforest como Layer (y un apikey que debéis generar en http://www.thunderforest.com/docs/apikeys/ para evitar la marca de agua).

El código que maneja mi JSON con las estaciones es este:

Que genera un botón Show me the map que al pulsar muestra el mapa con un marker para cada estación:

Además de ver la representación en el propio Notebook si en las opciones del párrafo selecciono Link this paragrah:

Esto me genera un URL en la que veo el mapa:

https://sofia2.com/console/notebook/#/notebook/2D1Y4DKY7/paragraph/20160519-175034_779917343?asIframe

y puedo ir pinchando sobre los diferentes markers:

Notebooks Procesando y representando datos en un mapa Leaflet con los Notebooks Sofia2

Premio enerTIC para el proyecto de eficiencia energética de SENA basado en Sofia2

SmartEnergySena

 

El proyecto de eficiencia energética desarrollado por el Servicio Nacional de Aprendizaje (SENA) de Colombia, en colaboración con Indra, ha ganado el premio de enerTIC 2017 en la categoría de Smart International Projects.

 

Sofia2InfografiaRecortada

 

La plataforma Smart Energy está basada en Minsait IoT Sofia2 (http://sofia2.com), la solución IoT con capacidades Big Data de Minsait, la unidad de transformación digital de Indra. Actúa como un gran “cerebro” integrador capaz de monitorizar los distintos dispositivos de medición de energía, agua y gas desplegados por las diversas sedes del SENA, almacenar información, visualizar gráficos y establecer previsiones de consumo mediante la combinación de los datos históricos de la base de datos y los recogidos en tiempo real.

 

Según el primer estudio sobre 28 sedes del SENA, los ahorros podrían llegar a suponer una reducción de alrededor del 25% en el caso de la factura energética, con un retorno de inversión de 1,7 años, en el supuesto de implementar medidas de poca inversión.

 

Estamos muy orgullosos de formar parte de este proyecto como base tecnológica de la plataforma Smart Energy. Puedes leer la noticia completa aquí

Premio enerTIC para el proyecto de eficiencia energética de SENA basado en Sofia2

Funcionalidad soporte multi-BDTR

image0141

En la Release 4.2 de Sofia2 IoT Platform se introdujo el concepto de multi-BDTR. Hasta ahora una instalación de Sofia2 sólo podía funcionar con una BDTR y con una BDH, es decir, si se usaba MongoDB como base de datos BDTR entonces todas las ontologías se almacenaban en esta base de datos.

En esta versión hemos añadido la capacidad de que en una misma instalación de Sofia2 se puedan gestionar diferentes BDTRs, de esta forma cuando creamos una ontología podemos seleccionar la base de datos sobre la que queremos que trabaje. Esta opción la podemos encontrar en Opciones Avanzadas > Seleccionar instancia BDTR en todas las pantallas de creación de ontología:

image0132

Esta funcionalidad nos permite tener tanto bases de datos relacionales como no relacionales en nuestra instancia de Sofia2. Para trabajar con bases de datos relacionales ,como puede ser un PostgreSQL se ha añadido una nueva funcionalidad que nos permite crear ontologías sobre este tipo de base de datos, a la cual podemos acceder desde el menú Ontologías > Crear Ontología > Crear Ontología en Base de Datos Relacional

image006

Lo que nos llevará al formulario para crear la ontología paso a paso, donde nuevamente en Opciones Avanzadas encontraremos el listado de BDTRs relacionales disponibles en la instancia de Sofia2:

post

La configuración de todas las BDTRs las realiza el administrados del sistema de la instancia de Sofia2, para ello se ha creado un nuevo rol SYS_ADMIN. Si accedemos a la instancia de Sofia2 con este rol podremos ver en un primer momento un listado de las BDTRs disponibles para la instancia:

post2

Si accedemos a Crear Instancia tenemos un formulario con todos los campos necesarios para configurar nuestras BDTRs:

post3

Cabe destacar que solo podemos tener una BDTR por defecto y que será en la cual se creen todas las ontologías si no seleccionamos ninguna BDTR en concreto en el apartado de Opciones Avanzadas de creación de ontologías.

Funcionalidad soporte multi-BDTR

10 Tendencias Tecnológicas para 2018 según Gartner: Digital (III)

Tras revisar la tendencia dedicada a Intelligenthoy trataremos la tendencia Digital, que se compone de Digital Twins, Cloud a Edge, Plataforma conversacional y experiencia inmersiva:

Tendencia 4: Digital Twins:

Un Digital Twin es una representación digital de una entidad o sistema del mundo real. En el contexto de IoT, los “gemelos digitales” están vinculados a objetos del mundo real y ofrecen información sobre el estado de las partes que componen la Thing, responden a los cambios,… Con un estimado de 21 billones de sensores y endpoints conectados para 2020, existirán Digital Twins para para miles de millones de cosas en el futuro cercano. Potencialmente esto permitirá ahorrar miles de millones de dólares en reparaciones y mantenimiento (MRO) además de optimizar el rendimiento de los assets IoT.

A corto plazo, los gemelos digitales ofrecen ayuda con la gestión de activos, pero también ofrecerán valor en la eficiencia operativa y mejoras sobre cómo se usan los productos y cómo se pueden mejorar.

Fuera del IoT, existe un potencial creciente para vincularlos a entidades que no son simplemente "cosas". "Con el tiempo, las representaciones digitales de prácticamente todos los aspectos de nuestro mundo estarán conectadas dinámicamente con sus contrapartes del mundo real y usando capacidades basadas en inteligencia artificial permitirán simulación avanzada, operación y análisis ", dice Cearley. "Los planificadores urbanos, especialistas en marketing digital, profesionales de la salud y planificadores industriales se beneficiarán de este cambio a largo plazo hacia el mundo gemelo digital integrado". Por ejemplo, los modelos futuros de humanos podrían ofrecer datos biométricos y médicos, y los gemelos digitales para ciudades enteras permitir simulaciones avanzadas.

Tendencia n° 5: Del Cloud al Edge:

Edge computing describe una topología informática en la que el procesamiento y recopilación de la información se ubica más cerca de las fuentes de esta información. Los desafíos de conectividad y latencia, las restricciones de ancho de banda y una mayor funcionalidad en el Edge favorecen los modelos distribuidos. Las empresas deberían comenzar a utilizar patrones de diseño Edge en sus arquitecturas, especialmente en el ámbito IoT.

Aunque es común suponer que la computación cloud y Edge son competencia, en realidad es un malentendido de los conceptos. Cuando se implementan en conjunto, Cloud se usa para crear el modelo orientado a servicios y Edge ofrece un estilo de entrega que permite la ejecución de aspectos desconectados del servicio en la nube.

Tendencia n° 6: Plataformas Conversacionales

Las plataformas conversacionales impulsarán un cambio de paradigma en el cual la carga de traducir la intención cambia del usuario a la computadora. Estos sistemas son capaces de ofrecer respuestas simples (¿Cómo está el clima?) o interacciones más complicadas (reserve una reserva en el restaurante italiano en Parker Ave.)

Estas plataformas continuarán evolucionando hacia acciones aún más complejas, como la recolección de testimonios orales de testigos de crímenes y actuando sobre esa información creando un boceto de la cara del sospechoso basado en el testimonio. E

l desafío que enfrentan las plataformas de conversación es que los usuarios deben comunicarse de una manera muy estructurada, y esto a menudo es una experiencia frustrante. Un diferenciador principal entre las plataformas de conversación será la solidez de sus modelos de conversación y los modelos de API y eventos utilizados para acceder, invocar y organizar servicios de terceros para ofrecer resultados complejos.

Tendencia nº 7: Experiencia inmersiva

La realidad aumentada (AR), la realidad virtual (RV) y la realidad mixta están cambiando la forma en que las personas perciben e interactúan con el mundo digital. Combinado con plataformas conversacionales, surgirá un cambio fundamental en la experiencia del usuario hacia una experiencia invisible e inmersiva. Los proveedores de aplicaciones, los proveedores de software de sistemas y los proveedores de plataformas de desarrollo competirán por ofrecer este modelo.

Durante los próximos cinco años, la atención se centrará en la realidad mixta, que está emergiendo como la experiencia de inmersión donde el usuario interactúa con objetos digitales y del mundo real mientras mantiene una presencia en el mundo físico. La realidad mixta existe a lo largo de un espectro e incluye pantallas montadas en la cabeza (HMD) para AR o VR, así como AR basado en teléfonos inteligentes y tabletas.

Dada la ubicuidad de los dispositivos móviles, la liberación de Apple de ARkit e iPhone X, Tango de Google y Arcore, y la disponibilidad de kits de desarrollo de software de AR multiplataforma como Wikitude, esperamos que las batallas por AR basados ​​en teléfonos inteligentes y MR se calienten en 2018.

10 Tendencias Tecnológicas para 2018 según Gartner: Digital (III)

Nueva guía e IDE de desarrollo de soluciones sobre Plataforma Sofia2

image0172

 

Uno de los objetivos fundacionales de la Plataforma Sofia2 es el de simplificar y agilizar el desarrollo de todo tipo de aplicaciones, desde aplicaciones IoT en las que intervienen Gateways o dispositivos móviles a grandes sistemas Big Data, sin olvidar las aplicaciones web puras de gestión, para las que Sofia2 es un facilitador.

En este ámbito se ha añadido en la sección de Documentación  de la web sofia2.com una nueva guía que explica paso a paso cómo construir aplicaciones web (en la guía basadas en Spring Boot y Angular):

image0172

 

Complementando la guía se ha generado un entorno de desarrollo empaquetado como un ZIP que contiene todas las herramientas necesarias para construir estas soluciones (incluyendo JVM Java, IDE Eclipse, Maven, Apache Tomcat,…)

Nueva guía e IDE de desarrollo de soluciones sobre Plataforma Sofia2

Integración instancia GIT en GitLab con instancia de Plataforma Sofia2

asoc-git-01
Se ha incorporado una nueva funcionalidad a la plataforma consistente en la asociación de una instancia de SCM GIT sobre GitLab con la instancia de plataforma Sofia2 para poder utilizar dicho repositorio como repositorio SCM de nuestros desarrollos sobre plataforma, además de futuras incorporaciones de automatizaciones para la gestión de funcionalidades como la exportación e importación de configuración y datos, proyectos web, etc.
No todas las instancias de plataforma tendrán disponible la funcionalidad, puesto que está pensado más bien para su uso con instancias que se utilicen como entorno de desarrollo o pruebas, más que con instancias productivas. Para que la funcionalidad esté disponible se debe de habilitar por configuración en la propia instalación de la instancia.
Lo primero que hay que hacer para poder hacer uso de la funcionalidad es crear la asociación. Para ello, accedemos con usuario administrador a la consola de plataforma y en el menú de administración, pulsamos sobre la opción repositorio GIT
asoc-git-01
Y creamos la asociación:
asoc-git-02
Introducimos los datos de URL del repositorio GIT, usuario, password y el private token del usuario administrador para la integración y marcamos la integración como activa:
asoc-git-03
Para poder realizar el enlace correctamente en el repositorio GIT debe de existir un usuario “project_sofia2” (del que debemos conocer su password y el private token) con rol administrador y un grupo llamado “ProjectSOFIA2” con el usuario administrador anterior como propietario.
asoc-git-04asoc-git-05
Solo se permitirá una configuración de Repositorio GIT por instancia y su activación/desactivación, pero no el borrado:
asoc-git-06
En la ventana de visualización se pueden ver los proyectos existentes en el grupo “ProjectSOFIA2”
asoc-git-07
A partir de este paso, cuando un usuario crea un proyecto en Sofia2, automáticamente se crea un proyecto en el repositorio GIT dentro del grupo ProjectSOFIA2 y el usuario correspondiente al usuario Sofia2 que crea el proyecto como owner del proyecto y añadido al grupo, además de crear una estructura base de proyecto a partir de un template.
Creamos el proyecto en Sofia2 Control Panel:
asoc-git-08
Y se crea proyecto en GIT, en el grupo ProjectSOFIA2:
asoc-git-09
Cada proyecto creado en Git se define con:
asoc-git-10
Finalmente, se crean los usuarios asociados con el proyecto:
  • Un usuario con rol owner en Git para el usuario que crea el proyecto
  • Un usuario con rol developer en Git por cada usuario asociado al proyecto Sofia2
  • Todos los usuarios quedarán asociados al grupo de usuarios del proyecto
A partir de este paso, cuando se añaden usuarios al proyecto Sofia2 con repositorio asociado, se crean y añaden usuarios al repositorio y grupo en GIT.
     – Los datos de los usuarios de Git se tomarán de los datos de usuarios de Sofia2.
     – Datos de usuario en Sofia2: Usuario, Nombre Completo, Email
     – Datos de usuario en GitLab: Usuario, Nombre, Email
     – Contraseña: se envía link al mail desde el API de GitLab con contraseña autogenerada para repositorio.
Si un proyecto ya existiera previa a la asociación del repositorio GIT con la Plataforma se tendría que editar el proyecto para que se realizara todo el proceso igual que si se creara de cero con el enlace a GIT activado.

En posteriores versiones se evolucionará la funcionalidad con algunas mejoras:
  • Marcador a nivel de proyecto para indicar si se quiere asociar o no el proyecto a repositorio GIT.
  • Visualizado de datos de enlace a Git con los datos de Grupo/proyecto y usuarios en Git dentro de la ventana de proyecto.
  • Visualización datos básicos de información de repositorio: Branches, Tags, Files, Activity, Commits, Graph, Compare, etc.
  • Funcionalidades para poder guardar contenidos desde consola en dicho repositorio por cada usuario de proyecto. Se hará especifico en cada una de las funcionalidades, por ejemplo, export/import, proyecto web, notebooks, etc.
Integración instancia GIT en GitLab con instancia de Plataforma Sofia2