Una de las conversaciones más habituales que suelo tener con algunos colegas de la profesión es sobre las muchas herramientas, plataformas y tecnologías disponibles para trabajar con datos. Algunas veces es para volverse loco!
Entre esas conversaciones, una de las más interesantes es la distinción entre Azure Synapse y Databricks. He dedicado algún tiempo a investigar al respecto para preparar un blog que ayude a arrojar un poco de luz entre estas potentes herramientas para Big Data.
Databricks
Databricks es una plataforma de análisis de datos basada en Apache Spark optimizada para cualquier plataforma de servicios en la nube. Databricks es open-source y usa computación distribuida construido sobre Scala, óptima para trabajar con grandes volúmenes de datos (billones de líneas, o mucho más), lo que se conoce como Big Data. Databricks fue fundada en 2013.
Los fundadores de Databricks son los creadores de Apache Spark, y en 2017 está integrado con Microsoft Azure, como ‘Azure Databricks’.
Para obtener más información sobre Databricks, visite: https://databricks.com/product/data-lakehouse
Synapse
Azure Synapse es un servicio de análisis que combina almacenamiento de datos así como análisis de Big Data. Synapse combina la tecnología de SQL para almacenamiento de cualquier tipo de dato -a cualquier escala-, Spark para análisis de Big Data y es integrable con otras soluciones del ecosistema Azure, tales como Power BI -para visualización-, CosmoDB -almacenamiento de datos no estructurados- y AzureML -para Machine Learning. En definitiva cubre todo el ciclo de principio a fin de cualquier proyecto de datos, desde ETL / ELT hasta puesta en producción de Inteligencia Artificial.
Para obtener más información sobre Synapse, visite: https://docs.microsoft.com/en-us/azure/synapse-analytics/
Lo cierto es que ambas herramientas se superponen -aunque hasta cierto punto-, pero no son lo mismo. Databricks es básicamente Apache Spark administrado, mientras que Synapse Analytics es SQL Data Warehouse administrado.
Ahora bien, cuándo usar Databricks y cuándo usar Synapse
Desarrollo de Machine Learning
Databricks dispone de tiempos de ejecución optimizados para Machine Learning e incluye algunas de las librerías más importantes para Deep Learning (TensorFlow, PyTorch, Keras, etc.), así como clústeres habilitados para GPU
En cuanto a Synapse, integrado con AzureML, también permite el desarrollo de Machine Learning y se puede usar MLflow. Aunque sin experiencia completa de git o colaboración multiusuario en notebook, algo que si está disponible en Databricks.
Sin entrar en demasiado detalle, y aunque ambas permiten el desarrollo de Machine Learning, Databricks dispone de mayor funcionalidades que Synapse.
Gestión de Data Lakes
Databricks puede consultar data lakes montando primero el data lake en el espacio de trabajo y luego usar Python, Scala, R para leer los datos.
Synapse puede usar el almacenamiento de SQL bajo demanda -o Spark- para consultar datos del data lake.
Por tanto, si es un desarrollador de BI familiarizado con SQL, Synapse es perfecto. Si es un científico de datos que habitualmente usa notebooks, use Databricks.
Transformaciones en tiempo real
Spark Structured Streaming como parte de Databricks funciona a la perfección, ya que la infraestructura sobre Spark dispone de mucha solidez y es muy madura. Además, tiene funciones adicionales como parte de Databricks Runtime, por ejemplo, agrupamiento en orden Z cuando se usa Delta, optimizaciones de unión, etc. El ‘Autoloader’ de Databricks permite carga incremental.
En Synapse es posible ingerir datos en tiempo real usando Stream Analytics, pero actualmente no es compatible con Delta Lake. Como plataforma en desarrollo, Synapse aún no está completamente enfocado en las transformaciones en tiempo real.
En este escenario, Databricks es más adecuado para la transmisión estructurada de datos a través de Spark (y, por lo tanto, transformaciones avanzadas) y cargar datos en tiempo real en Delta Lake.
Análisis y almacenamiento de datos
Synapse permite un almacenamiento de datos con los que desarrollar un modelo de datos relacional completo, así como procedimientos almacenados, etc. Proporciona todas las funciones de SQL que ha utilizado cualquier BI-er como indexación columnar y otros; incluyendo T-SQL. Es posible incluso usar Power BI con Synapse para visualizar trillones de líneas.
En Databricks es posible almacenar datos basados en Delta Lake, pero no con todo el despliegue y la funcionalidad que proporciona SQL, así como las capacidades de un data warehouse tradicional. Databricks usa el paradigma ‘Delta Lakehouse’ que ofrece funcionalidades básicas de BI pero no necesariamente una experiencia completa de almacenamiento de datos al estilo SQL. Tampoco proporciona una experiencia completa de T-SQL (Spark SQL)
Espero que haya sido de utilidad.