Databricks: Introducción a Spark en la nube

Última actualización: 26/02/2024 – Oscar Fernandez

En esta entrada vamos a entender en qué consiste Databricks. Cómo nos puede ayudar esta solución cloud en nuestras necesidades de procesamiento y analítica Big Data y cuáles son sus particularidades para poder tomar decisiones con criterio.

Qué es Databricks

¿Qué es Databricks?

Databricks es el nombre de la plataforma analítica de datos basada en Apache Spark desarrollada por la compañía con el mismo nombre. La empresa se fundó en 2013 con los creadores y los desarrolladores principales de Spark. Permite hacer analítica Big Data e inteligencia artificial con Spark de una forma sencilla y colaborativa.

Esta plataforma está disponible como servicio cloud en Microsoft Azure y Amazon Web Services (AWS).

Databricks contiene muchas funcionalidades que la hacen una solución analítica bastante completa. Aun así, depende de servicios adicionales como almacenamientos externos de datos para poder convertirse en la pieza central de un sistema analítico empresarial completo como Data Warehouse o Data Lake.

Es una plataforma que permite múltiples casos de uso como procesamiento batch, streaming y machine learning.

Características de Databricks

Permite auto-escalar y dimensionar entornos de Apache Spark de forma sencilla en función de las necesidades. También es posible terminar automáticamente estos clústers. De esta forma, se facilitan los despliegues y se acelera la instalación y configuración de los entornos. Con la opción serverless se puede abstraer toda la complejidad alrededor de la infraestructura y obtener directamente acceso al servicio. Así se facilita su uso por equipos independientes que necesiten recursos volátiles y despliegues ad-hoc.

Ecosistema de Databricks en Microsoft Azure
Ecosistema de Databricks en Microsoft Azure

Incluye proyectos colaborativos y espacios de trabajo interactivos llamados notebooks. Estos pueden servir para desarrollar procesos y prototipos de transformación y análisis y más adelante ponerlos en producción con el planificador. Están integrados con sistemas de control de versiones como Github y Bitbucket y es posible crear directorios separados para diferentes unidades o equipos.

Un clúster de Databricks tiene dos modos: Estándar y Alta Concurrencia. El clúster de alta concurrencia (High Concurrency) soporta los lenguajes de programación Python, R y SQL mientras que el clúster Estándar (Standard) soporta los lenguajes Scala, Java, Python, R y SQL. También se complementan con librerías y frameworks como Tensorflow, PyTorch, GraphX, Keras y scikit-learn.

Soporta cifrados de datos con la última versión de TLS y se integra con los servicios AWS KMS (Key Management System) y Azure Key Vault. En cuanto a su seguridad, es compatible con Azure Active Directory para definir políticas de acceso, también se pueden definir los roles y SLAs.

Ecosistema de Databricks en Amazon AWS
Ecosistema de Databricks en AWS

Además, la plataforma puede realizar backups periódicos automáticos de los sistemas y sus metadatos para evitar la pérdida de información. También genera alertas y capacidad de monitorización de los procesos, generando reintentos cuando sea necesario.

¿Cómo usar Databricks?

Databricks no es responsable de la capa de persistencia de los datos. Esto quiere decir que los datos se procesan con Spark pero antes deben estar almacenados en algún componente adicional. Algunos ejemplos de estos componentes son Azure Blob Storage, Amazon S3, ADLS (Azure Data Lake Storage), Azure SQL Data Warehouse o herramientas compatibles con JDBC y ODBC.

Al evaluar Databricks como una solución Cloud, debemos prestar atención también al resto de servicios con los que se integra de forma nativa y para los que se optimiza la operativa. Tanto en AWS como en Azure existen integraciones con servicios de ingesta de datos como Azure Data Factory, de almacenamiento y de visualización de datos como Power BI.

Es importante tener en cuenta herramientas como Azure Data Factory (ADF) en Azure, ya que estas pipelines de datos nos pueden ayudar a configurar y a invocar los trabajos de Databricks mediante variables. Además, de esta forma también podremos establecer dependencias entre notebooks fácilmente y nos ayudará en las tareas de debug.

Nos permite ejecutar trabajos Spark de tres formas: mediante Notebook, mediante su JAR y mediante spark-submit.

El sistema está preparado para trabajar a través de la interfaz web, desde la que se pueden ejecutar y monitorizar trabajos. Además, existe una herramienta de línea de comandos: Databricks CLI. Esta utilidad se conecta a la API REST de Databricks y, una vez autenticada, puede ejecutar ciertos comandos. Es una herramienta que aún se encuentra en desarrollo.

Databricks Community

Databricks community es la versión de Databricks gratuita. Permite usar un pequeño clúster con recursos limitados y notebooks no colaborativos. La versión de pago no tiene estas limitaciones y aumenta las capacidades.

Databricks Community Edition Dashboard
Databricks Community Edition Dashboard

Una vez hemos hecho login en la plataforma, nos permitirá hacer un tutorial rápido que nos explica la funcionalidad básica:

  • Crear un clúster de Spark
  • Asociar notebooks al clúster y ejecutar comandos
  • Crear tablas de datos
  • Hacer consultas y visualizar los datos
  • Manipular y transformar los datos

El primer paso es crear un nuevo clúster. Esto se puede hacer desde la pestaña clusters. Nos permite elegir el nombre y la versión del runtime. En este caso elegimos 6.5: Con Scala 2.11 y Spark 2.4.5. La versión Community crea un clúster con un driver de 15GB de RAM.

Creación de nuevo Cluster en Databricks Community
Creación de nuevo Cluster en Databricks Community

Además, es posible configurar desde aquí las variables de entorno y la configuración específica de Spark. Una vez que hemos creado el clúster, para poder usarlo debemos desplegarlo y esperar a que se encuentre en el estado «Running».

Clusters en Databricks Community
Clusters en Databricks Community

Con Databricks Community no podemos ejecutar jobs de Spark desde ficheros JAR, solamente desde notebooks. Es posible integrar los notebooks con el sistema de control de versiones Git en Github o Bitbucket.

Integración de un notebook con Git
Integración con Git en Databricks Community

Cuando creamos y accedemos a un notebook, podemos escribir consultas, visualizar datos y realizar transformaciones. Para ejecutar cada bloque existe un icono a su derecha, pero previamente debemos asociar el notebook a un clúster en ejecución.

Ejemplo de un Notebook
Ejemplo de Notebook en Databricks Community

Databricks integra varias herramientas de logging y de monitorización. Entre ellas se encuentra la Spark UI, a la que accedemos desde dentro de una pestaña en el clúster que hemos desplegado. Aquí tenemos el detalle de los trabajos que hemos ejecutado en el clúster de Spark desde el notebook.

Spark UI en un clúster de prueba
Spark UI en Databricks Community

¿Qué es Databricks SQL Analytics?

Databricks SQL Analytics

Databricks SQL Analytics es una herramienta que nos permite realizar análisis de datos y operar nuestra arquitectura de Data Warehouse sobre el ecosistema de Databricks. SQL Analytics es accesible desde la interfaz web de Databricks y proporciona un editor de SQL nativo para consultar datos en nuestro Data Lake y Data Warehouse o Data Lakehouse. También podremos crear directamente visualizaciones, dashboards y configurar alertas. Los usuarios principales son analistas de datos y científicos de datos.

SQL Analytics tiene 4 componentes principales:

  1. Editor SQL: El editor SQL nos permite escribir y almacenar consultas para acceder y explorar nuestros datos. También, podremos crear y compartir visualizaciones y dashboards y crear alertas de cambios.
  2. Conectores de BI y SQL: Los conectores nos permiten integrar otras herramientas como Power BI en nuestros endpoints SQL para establecer accesos optimizados a los datos.
  3. Endpoints SQL: Estos endpoints representan los puntos de acceso a los datos. Son recursos computacionales que permiten ejecutar consultas SQL. También gestionan los accesos a los usuarios, el tamaño de los clusters de Apache Spark y su concurrencia.
  4. Databricks Delta Engine: Es el motor de consultas que ejecuta en los clusters de Spark, procesando grandes cantidades de datos en paralelo.

Ventajas de Databricks SQL Analytics

A continuación enumero las ventajas más importantes de la herramienta:

Interfaz de SQL Nativo

Una de las capacidades que se echaban de menos en Databricks es un editor de consultas SQL que permita a los usuarios explorar fácilmente los datos, similar a lo que hace Hue en el ecosistema Hadoop con Hive. Este editor está basado en Redash y tiene autocompletado. En este caso, las tablas se almacenan en formato Delta Lake aunque también admite fuentes de datos como JSON o CSV con operaciones limitadas.

Delta Lake Databricks Logo

Delta Lake proporciona capacidades adicionales sobre el formato de datos Parquet. Entre estas capacidades se encuentra el soporte a las propiedades ACID, posibilitando transacciones sobre nuestro data lake. También es posible recuperar una versión anterior de un dato o de una tabla (time travel), por lo que resulta muy útil para garantizar el cumplimiento de determinadas regulaciones.

Los resultados de las consultas se pueden almacenar en una caché para reducir los tiempos de respuesta en ejecuciones posteriores. Además, podremos ver las ejecuciones anteriores de una consulta. También es posible guardar consultas y fragmentos de código SQL junto a una descripción para reutilizarlos cuando necesitemos.

Databricks SQL Analytics Editor
Editor de consultas en Databricks SQL Analytics

La interfaz SQL integra también un navegador de esquemas, en el que podremos ver todas las tablas para las que tengamos permisos de lectura.

Visualizaciones, Dashboards y Alertas

A partir de los resultados de las consultas, SQL Analytics nos permite construir y guardar fácilmente visualizaciones. Entre los tipos de visualizaciones incluidos se encuentran los diagramas de cajas, gráficos de barras, de áreas, circulares, Cohort, contadores, embudos, mapas, tablas dinámicas, Sankey, Sunburst y nubes de palabras.

Estas visualizaciones se pueden agrupar en dashboards o paneles con una interfaz gráfica de arrastrar y soltar. Cuando tenemos guardado un dashboard lo podemos compartir y abrir en cualquier navegador.

Estos dashboards también se pueden configurar para que refresquen los datos automáticamente, y establecer alertas automáticas para avisar de los cambios en los datos. De esta forma, podremos realizar un seguimiento fácilmente de nuestros KPIs o indicadores.

Con las alertas deberemos establecer una frecuencia de notificaciones y un destino. Los destinos de alertas soportados son Email. Slack, WebHook, Mattermost, ChatWork, PagerDuty y Google Hangouts Chat.

Administración del lago de datos

En SQL Analytics se crean SQL Endpoints, que son los puntos de acceso a los datos. Estos endpoints se pueden asignar a usuarios o grupos de usuarios y también controlar su tamaño y su concurrencia.

Representan clusters de Apache Spark desplegados en nuestra suscripción. Los endpoints extienden la capacidad de Delta Lake para manejar los picos de tráfico y la utilización del clúster. Admiten escalado automático estableciendo un tamaño mínimo y un tamaño máximo medido en DBU (Databricks Units), que representan la capacidad de procesamiento por hora. El máximo son 256 workers.

Si un endpoint se encuentra detenido y ejecutamos una consulta, este arranca automáticamente.

SQL Endpoint Databricks SQL Analytics
Configuración del SQL Endpoint en Databricks SQL Analytics

Por otro lado, podremos analizar el uso de estos endpoints por los usuarios de la plataforma y por intervalos de tiempo. También, podremos analizar las consultas que se han realizado y las fases en las que descomponen, para realizar auditorías o solucionar los problemas. Se integra con Azure Active Directory y tiene controles basados en roles.

Integraciones con otras Herramientas

Aunque muchas operaciones y visualizaciones se pueden llevar a cabo en la propia interfaz de la herramienta, también es posible integrar SQL Analytics con otras herramientas de BI con los conectores de Power BI, Tableau, Qlick o MicroStrategy. Podemos usar cualquier cliente compatible con Apache Spark y de esta forma establecer las conexiones a nuestras tablas de datos de Delta Lake.

Además podemos integrar SQL Analytics con bases de datos y servicios de almacenamiento de Azure o AWS como Synapse Analytics, Cosmos DB o ADLS (Azure Data Lake Storage).

Limitaciones de Databricks SQL Analytics

SQL Analytics es una gran opción para complementar nuestro Databricks en la nube, pero debemos tener en cuenta que es una herramienta con sus limitaciones.

Por un lado, SQL Analytics aún no proporciona la capacidad de ejecutar un clúster en múltiples zonas de disponibilidad y balancear automáticamente la carga entre esos endpoints.

Además, las operaciones de escalado de cómputo afectan a la disponibilidad del sistema. Cuando se modifica el tamaño del clúster, este se detiene, por lo que las sesiones abiertas se cierran. Deberemos tener esto en cuenta en nuestra planificación cuando necesitemos editar la capacidad.

Alternativa en Azure: HDInsight

HDInsight es el servicio para analítica Big Data de Microsoft Azure con el que se pueden desplegar clústers de servicios Big Data como Hadoop, Apache Spark, Apache Hive, Apache Kafka, etc.

En HDInsight existen varios tipos de clúster predefinidos con los componentes que cubren los casos de uso más habituales como Streaming, Data Warehouse o Machine Learning.

HDInsight está integrado con otros servicios del catálogo de Microsoft Azure, y es compatible con otras soluciones como Databricks. HDInsight podría cubrir la capa de almacenamiento persistente que necesita Databricks para formar una solución Big Data completa.

Te recomiendo leer el artículo acerca de HDInsight y, en concreto, el apartado Databricks vs HDInsight para conocer las diferencias más destacadas.

También, puedes conocer la alternativa en AWS: Amazon EMR.

Siguientes Pasos, Formación y Cursos de Databricks

Aquí tienes mis dos cursos recomendados para que aprendas de forma eficiente Databricks, de los mejores que encontrarás online para cualquier nivel:

curso databricks coursera

Especialización en Ciencia de Datos con Databricks

Este curso ofrecido por Databricks en la plataforma de formación online Coursera es de los más populares. Podrás aprender todos los fundamentos de Databricks y la API de Apache Spark para desarrollar trabajos de transformación de datos. Si tienes algún conocimiento de SQL y Python te acelerará el aprendizaje.

curso azure databricks coursera

Azure Databricks para Ingeniería de Datos

Este curso ofrecido por Microsoft en Coursera te enseñará todo lo que necesitarás de Databricks en Azure. Desde cómo configurar los clusters de Spark, ejecutar trabajos y usar los notebooks con Scala o Python.

También, tienes este libro disponible en Amazon: Beginning Apache Spark Using Azure Databricks

Puedes aprender más de este ecosistema en el blog de Databricks. Si además estás interesado en la formación oficial de la plataforma y de Apache Spark, puedes acceder al portal de formación y de certificación de Databricks llamado Databricks Academy.

Aquí podrás aprender sobre todo el ecosistema y conseguir las certificaciones oficiales para convertirte en experto.

Preguntas Frecuentes Databricks – FAQ

¿Para qué se usa Databricks?

Databricks es una herramienta cloud usada para procesar y realizar transformaciones sobre Big Data. También permite explorar estos datos usando modelos de inteligencia artificial. Está basada en Apache Spark.

¿Databricks es gratuito?

Existe una versión gratuita llamada Databricks Community Edition que permite usar un pequeño clúster y notebooks con capacidad limitada. La versión de pago aumenta estas capacidades.

¿Qué es un notebook en Databricks?

Un notebook es una herramienta web que presenta un documento colaborativo sobre el que escribir código ejecutable y presentar visualizaciones de datos. Es la herramienta principal de trabajo en Databricks.

¿Qué lenguaje es recomendado para los trabajos de Spark en Databricks?

Para el clúster estándar de Databricks, Scala es el lenguaje recomendado para desarrollar trabajos de Spark. Apache Spark está desarrollado en Scala y es el núcleo de Databricks, aportando mejor rendimiento que Python y que SQL.



Esta entrada tiene un comentario

  1. Jeanett

    Hola, como puedo contratar Databricks en Mexico, conoces algun asesor, que pueda contactar?

Deja una respuesta