Blog

Data Factory vs. Databricks: Wanneer je liefde voor data wat (Apache) Spark mist

Hoe kies je de juiste datapartner? Azure Data Factory heeft mooie voordelen als je begint, maar met Apache Spark kan je diepere lagen ontdekken. Dus is Azure Databricks je datapartner zijn die de “Spark” weer terugbrengt in je dataproject? Een ding is zeker, in Azure hoef je niet persé te kiezen voor een monogame dataoplossing.

Gregor Suttie

Auteur

Gregor Suttie Azure Architect & MVP

Stel je voor: je bent gevraagd om een aantal databronnen naar Azure te brengen om later te gebruiken voor verdere verwerking. Zoals ieder verstandig persoon, begin je de zoektocht naar informatie op het internet. Het duurt niet lang voordat je op Azure Data Factory stuit. Hierover vind je de volgende informatie:

Azure Data Factory

Azure Data Factory (ADF) is een volledig beheerde, serverloze data integratie dienst. ADF kan worden gebruikt voor het laden en transformeren van data in zogenoemde “Pipelines”. Door gebruik te maken van de handige Graphical User Interface (GUI), kan je met meer dan 90 ingebouwde gegevensbronnen connecteren zonder te hoeven coderen. Databronnen die niet ingebouwd zijn kunnen door middel van ”custom connectors” worden geconnecteerd met ADF.

 

De “honeymoon” fase

ADF voelt als liefde op het eerste gezicht. Je verbindt de benodigde datasets handmatig via de GUI. Gegevensbronnen laad je in door “Activities” naar de ADF “Pipelines” te slepen. Omdat je in ADF zowel de connecties als de “Activities” met de hand kan configureren, is het niet nodig om nog een programmeertaal te leren. Je verwacht binnen no-time in productie te gaan met deze oplossing, handig! Deze verwachting blijkt niet ongegrond. Na een paar dagen van configureren en zorgvuldig tweaken, werkt je dataoplossing als een trein. Een match made in de (Azure) cloud!

 

Wanneer de “Spark” er niet meer is...

Na verloop van tijd word je steeds vaker gevraagd om meer gegevensbronnen toe te voegen aan je dataoplossing. Tot overmaat van ramp zijn sommige van deze bronnen niet beschikbaar in ADF. Om deze reden besteed je veel tijd aan het configureren en opzetten van “custom connectors”. Naast het laden van nieuwe databronnen word je ook steeds vaker gevraagd om gegevens op te schonen en te transformeren. Al deze opschoningsacties en transformaties moeten handmatig worden geconfigureerd in ADF. Als gevolg daarvan wordt het onderhoud van ADF steeds tijdrovender. Je begint je af te vragen... is het gebruik van ADF het zalige huwelijk wat je eerst voor ogen had? Je besluit de zoektocht naar een datapartner voort te zetten. Het duurt niet lang voor je Apache Spark en Azure Databricks ontdekt.

Apache Spark

Apache Spark is een “multi language engine” die wordt gebruikt voor data engineering, data science, en machine learning vraagstukken. Apache Spark kan bijvoorbeeld worden gebruikt voor het samenvoegen, transformeren, analyseren of opschonen van grote hoeveelheden data.  

Azure Databricks

Een van de beschikbare tools waarmee je Apache Spark kan gebruiken is Azure Databricks. In Azure Databricks kan je data aggregeren, samenvoegen, transformeren en opschonen door gebruik te maken van Apache Spark code. Azure Databricks biedt ook andere functionaliteiten, zoals het analyseren van datasets en het maken van visualisaties. Je kunt Azure Databricks zelfs gebruiken om data science vraagstukken op te lossen. Je kan de omgeving binnen enkele minuten opzetten, waarna je kan samenwerken met collega’s door middel van “notebooks”. Trouwens, op Azure Databricks draai je desgewenst altijd de laatste versie van Apache Spark.

Een andere veelgebruikte optie binnen Azure is om Apache Spark te programmeren binnen Azure Synapse Analytics. De functionaliteit tussen Azure Synapse Analytics en Azure Databricks heeft een significante overlap. De verschillen tussen de twee tools vallen buiten de scope van dit artikel.

 

Hoe je het (de “Spark”) weer terugkrijgt

Tussen ADF en Azure Databricks vind je verscheidene overeenkomsten en verschillen. Zo kunnen beide tools worden gebruikt voor het laden en transformeren van data. De manier waarop verschilt echter wel. In ADF sleep je “Activities” naar de gemaakte “Pipelines” in de GUI. In Azure Databricks doe je dit allemaal door middel van eigen geschreven code in “notebooks”. Dat laatste maakt een groot verschil. Gegeven, het kost je wel wat tijd om Apache Spark op te pakken. Maar, de gemaakte code zorgt wel voor een meer generieke oplossing. Een deel van de bestaande logica kun je gemakkelijk hergebruiken wanneer nieuwe datasets worden ingeladen. Zal Azure Databricks je datapartner zijn die de “Spark” weer terugbrengt in je dataproject?  

 

Een huwelijk met meerdere (data) partners

Met Azure hoef je niet persé te kiezen voor een monogame dataoplossing. Sommige tools zijn namelijk geschikt om samen te worden gebruikt. Dit is ook het geval voor ADF en Azure Databricks. De uiteindelijk gekozen oplossing wordt een pragmatische: bestaande “Pipelines” met slechts een klein aantal transformaties binnen ADF. Deze draaien immers al stabiel. De meer complexe “Pipelines” herschrijf je naar Apache Spark code. Deze code zet je in de “notebooks” die je binnen Azure Databricks hebt aangemaakt. Deze Azure Databricks “notebooks” trap je af binnen ADF door gebruik te maken van zogenoemde “Databricks Activities”. Het resultaat is een stabiel draaiende hybride oplossing.  

 

Conclusie: wanneer het tijd is om een nieuwe (data)partner te kiezen

Terugkijkend op dit liefdesverhaal, zie je dat ADF super was toen je nog niet zoveel dataervaring had. Je wou snel de beoogde oplossing naar productie brengen en had niet de tijd om ook nog Apache Spark te gaan leren. Met behulp van de handige GUI kon je snel data inladen en transformeren. Doordat er meer dan 90 databronnen al “out of the box” beschikbaar waren, was het laden van datasets heel eenvoudig. Maar, toen je meer databronnen moest gaan gebruiken werd het steeds meer werk om al die “Pipelines” met de hand te maken en configureren. Dit was het moment waarop je begon na te denken over alternatieven.

Uiteindelijk bood Azure Databricks simpelweg meer opties dan ADF. Naast het laden en transformeren van data, kan je ook bijvoorbeeld data-analyse en visualisatie doen met Azure Databricks. Apache Spark code maakte het creëren van generieke en herbruikbare oplossingen mogelijk. Gelukkig maakte ADF het makkelijk om Azure Databricks toe te voegen aan je oplossing. In de ADF GUI kon je namelijk gemakkelijk “Databricks Activities” toevoegen aan je “Pipelines”.

 

ADF of Azure Databricks: ons advies

Intercept adviseert om ADF te gebruiken in de volgende situaties:

  • Je eenvoudige data ingestion en transformatie behoeften hebt.
  • Je hebt geen ervaring met coderen in Python, Scala of Java en/of je hebt niet de tijd of de ambitie om Apache Spark te leren.

Intercept adviseert om Azure Databricks te gebruiken wanneer:

  • Je een generieke en schaalbare oplossing nodig hebt die kan worden toegepast op meerdere databronnen en vraagstukken.
  • Je codeerervaring hebt in Apache Spark, of Apache Spark wil leren.
  • Je complexe dataoplossingen creëert.

 

Het bovenstaande artikel was het tweede artikel in onze data serie. Lees het eerste artikel over het bouwen van Data Lakes ook. Heb je meer vragen over het gebruik van Azure Data Factory of Azure Databricks? Wij brengen je graag in contact met onze Data Experts. Je hoeft ons alleen maar te mailen, en wij helpen je verder!