Sí, no lo podemos ocultar. Una de las grandes ventajas o desventajas de la tecnología es que evoluciona constantemente y lo que antes era Azure Machine Learning, Azure Databricks, ahora Azure Synapse. La cuestión es ¿cuándo, cómo y dónde los usamos?
Microsoft lleva tiempo desarrollando su servicio de analítca avanzada llamado Azure Synapse Analytics pero al mismo tiempo invierte mucho dinero, junto a Amazon y Google, en Databricks, otro servicio de analítica avanzada que tenemos en Azure, y, casi en paralelo, sigue evolucionando su servicio base, también de analítica avanzada, que es Azure Machine Learning.
¿Un mensaje confuso?
Puede parecer un mensaje confuso, de hecho, realmente sin entrar en detalle lo es, aunque todos sabemos que tenemos diferentes herramientas para hacer lo mismo o cosas parecidas, y que lo ideal es que las conozcamos bien para aprovechar los puntos fuertes y evitar los puntos débiles de cada uno de ellas.
Azure Databricks
Databricks es un servicio que nos permite desarrollar de forma colaborativa proyectos de analítica avanzada, Machine Learning, etc. basado en la plataforma Apache Spark.
Como podemos ver en el diagrama anterior, el motor de Databricks es principalmente Apache Spark, donde tenemos un self-service para la creación de diferentes configuraciones de clusters, que junto a un Workspace colaborativo permite a los diferentes actores en un proyecto de este tipo colaborar mediante notebooks. Todo esto aderezado con la capacidad de programar trabajos que permiten ejecutar pipelines de transformación, análisis, etc.
Databricks da soporte a todo el ciclo de vida de un proyecto de data con mucha presencia en las fases de ingesta, preparación, entrenamiento y entrega de datos. Soportado bajo los lenguajes de desarrollo habituales: Python, Scala, R.
Azure Synapse Analytics
Synapse Analytics es una plataforma analítica de colaboración donde los diferentes roles de un proyecto de data tienen un espacio para trabajar, basada en SQL Server Data Warehouse y Apache Spark.
Synapse Analytics Studio es la herramienta donde se desarrollan las diferentes piezas que conforman un proyecto de data:
- Data, donde tenemos acceso a los diferentes orígenes de datos y sus datasets basados en SQL database, Azure Data Lake, Azure Storage, Cosmos DB…
- Develop, un espacio de trabajo donde implementar y ejecutamos scripts SQL, Notebooks, Data Flow o definiciones de trabajo de Spark.
- Integrate para desarrollar los pipeline de Azure Data Factory que realizan cargas y/o transformaciones de datos.
Al igual que Databricks, Synapse soporta el ciclo de vida de los proyectos de data con presencia en las fases de ingesta, preparación, entrenamiento, almacenamiento y entrega de datos, y con soporte nativo de SQL Data Warehouse y Apache Spark. Esto es, podemos ejecutar consultas SQL sobre los datos del Data Warehouse, podemos ejecutar consultas SQL sobre datos externos, por ejemplo, Azure Data Lake y podemos ejecutar notebooks en Apache Spark desarrollados en Python, Scala, .NET Spark y/o Spark SQL.
En la unión está la fuerza
Desde cualquier perspestiva de proyecto, cualquiera de estos dos servicios nos permiten implementar y ejecutar sin problemas. Tal vez Synapase pareciera tener alguna ventaja con el motor SQL pero no es nada que con un poco de esfuerzo se pueda hacer desarrollando con Python, Scala o Spark SQL.
Es posible que para un científico de datos sea más natural trabajar con los Notebooks de Databricks, aunque Synapse también cubre esta funcionalidad, lejos de las capacidades de Jupyter Notebook o del propio Databricks, con su propia tecnología de Notebooks que se ejecutan sobre clusters de Spark.
Quizá SQL Data Warehouse y los pipeline de Data Factory que tenemos en Synpase sean la herramienta ideal para los ingenieros de datos, que no suelen tener capacidades de desarrollo en Python, Scala, etc., aunque Spark SQL y los jobs en Databricks no están muy lejos de la comodidad de trabajo de estos ingenieros de datos.
La combinación de estos servicios puede ser la clave. ¿Por qué no dar soporte a un ingeniero de datos que trabaje en Synapse y a que los científicos de datos usen Databricks? un ejemplo, de muchos que podemos poner:
Actividades de un Ingeniero de datos
- Realizar la carga y las transformaciones en nuestro Data Lake, con Azure Synpase usando pipelines o tablas externas de SQL
- Exploración de los datos del Data Lake usando consultas SQL
- Exponer un Data Mart usando SQL Data Warehouse
- Realizar agregaciones y preparar vistas de los datos usando SQL
Actividades de un Científico de datos
- Realizar transformaciones de los datos del Data Lake con Azure Databricks
- Exploración y análisis de los datos usando notebooks de Azure Databricks
- Entrenamiento de un algoritmo predictivo usando notebooks de Azure Databricks
- Publicación del modelo predictivo en MLFlow y Azure Machine Learning
Actividades diferentes, orientadas al trabajo de cada rol en el proyecto que necesitan como eje fundamental que los datos estén bien organizados y centralizados, y en este punto parece que no hay duda, Azure Data Lake es el centro de datos para una arquitectura moderna.
Todos los datos deberían estar disponibles en un Data Lake que permita realizar los diferentes trabajos de un proyecto de data partiendo de entidades consolidadas y verificadas por la organización y que aglutine la información necesaria a analizar de la compañía y o del proyecto.
Si quieres más info, puede que te interese ver este webinar: «Descubriendo Azure Synapse» que impartí junto a Adrián del Rincón y Juan Pedro Álex 🙂