bilde1
>

"Data Engineering and AI on the Microsoft Azure Platform" – reisebrev fra Brussel

Håkon Raudsandmoen,  Frode Sætre  
5. nov. 2019

I oktober dro vi (Håkon Raudsandmoen og Frode Sætre) til Brussel for å delta på kurset «Data Engineering and AI on the Microsoft Azure Platform».

Kurset tar for seg Microsoft sin stordataløsning, som består av en samling skalerbare Azure-tjenester for å laste inn, lagre og analysere data i skyen. Dagene bestod typisk av en kombinasjon av forelesning og hands-on oppgaver (lab).

Kurset er delt inn i to forskjellige deler. Første del tok for seg «Data Engineering», og siste del omhandlet «Data Science». Her kan du lese litt om våre "takeaways" fra oppholdet:

Håkon og Frode i Brussel

Data Engineering

Første del av kurset handlet om lasting, transformering og lagring av data i skyen.

Her var det spesielt fokus på hvilke valgmuligheter man har, videre hvordan ulike teknikker videreføres fra tradisjonelle verktøy som SQL Server Integration Services (SSIS) til mer moderne verktøy i Azure, som Data Factory og Databricks.

De forskjellige mulighetene for lagring i skyen

Det ble også brukt en del tid på å utforske de forskjellige alternativene vi har for lagring i skyen. For ustrukturerte data lå fokuset på Azure Blob Storage og Azure Data Lake Gen1.

Dette er begge tjenester som er svært godt egnet for lagring av store datamengder, men begge med hver sine styrker og svakheter.

Blob Storage er best på ikke-tekstbaserte filer (databasekopier, bilder, videoer og lydfiler). Disse har både varm og kald lagring og geografisk redundans.

Data Lake Gen1 er best på store mengder tekstdata, som har et hierarkisk filsystem med mappestruktur og sikkerhet koblet opp mot Azure AD.

Beste fra begge verdener? 

Data Lake Gen2  er den nyeste tjenesten på området, den bygger på Blob Storage, men tar også med seg alle fordelene til Data Lake Gen1. Her får man altså det beste fra begge verdener, og også til en billigere penge. Selv om dette virker svært lovende må man være obs på at det foreløpig kun finnes begrenset støtte for Data Lake Gen2 i andre Azure-tjenester, og at det dermed kan lønne seg å vente litt med en eventuell migrering.

Strukturering av data med Azure Data Warehouse

For strukturerte data var det Azure Data Warehouse som fikk mest oppmerksomhet. Her er det optimalisert for å gjøre spørringer mot store datamengder. Til sammenlikning med en vanlig Azure Database leverer datavarehuset betraktelig bedre ytelse og har mye større kapasitet.

Henting og transformering av data med Azure Databricks og Azure Data Factory

Når det kom til henting og transformering av data fokuserte vi på Azure Databricks og Azure Data Factory.

Azure Databricks er som navnet tilsier et samarbeid mellom Azure og Databricks. Databricks er bygd på toppen av Apache Spark, som igjen er et prosjekt utviklet for å øke ytelsen av Hadoop og andre stordataapplikasjoner, ved bruk av en klynge- og minnebasert datamotor.

I Azure Databricks kan man velge hvilket språk man vil skrive, det støtter både Python, Scala, R, Java og SQL. Det er ment å fungere som en felles plattform for både «Data science» og «Data Engineering», men vi satt begge igjen med et inntrykk av at det først og fremst er på «Data Science»-området man har de største fordelene med dette verktøyet.

Azure Data Factory i fokus

Tjenesten som det ble viet mest tid til under kurset var uten tvil Azure Data Factory. Denne har allerede begynt å bli ganske sofistikert og utvides fortsatt kontinuerlig. Blant de nyeste funksjonene finner vi blant annet koblinger mot HDInsight og ADX, samt en rekke nye transformasjonsmuligheter i Dataflows. Innenfor Dataflows er det for øyeblikket «Mapping Data» som gjelder, men her fikk vi også en liten forhåndstitt på såkalte «Wrangling Data», som er et nytt og spennende alternativ.

Hovedforskjellen er at dette skrives i Power Query i motsetning til det visuelle grensesnittet til Mapping Data. Dette gjør det blant annet mulig å enkelt flytte transformasjoner fra Power BI til Data Factory.
 

Data Science


I del 2 av kurset fokuserte vi på kunstig intelligens, maskinlæring og rollen som Data Scientist. Vi startet med en innføring i Python, som er det foretrukne programmeringsspråket i denne rollen.

Deretter bygget vi på med den såkalte NumPy-stacken, herunder SciPy, som er et bibliotek brukt til vitenskapelig- og teknisk databehandling, og verktøy som Matplotlib (plottebibliotek) og Pandas (bibliotek for data manipulasjon og analyse). I tillegg fikk vi en innføring i pakkene Seaborn og Plotly når det kom til visualisering.

Kode i Azure Notebooks

Det meste av kode skrev vi i Azure Notebooks. Dette er en skybasert versjon av Jypiter Notebooks. En såkalt «notebook» er i bunn og grunn en webside med celler som støtter Python eller markdown (tekst). Kode kan kjøres direkte i notebooken og resultatet vises også der.

Maskinlæring i Python

Til slutt beveget vi oss inn i maskinlæringsverden hvor vi først så grunnleggende på hva maskinlæring er, før vi gikk videre med maskinlæring i Python. Her brukte vi mye av det vi hadde lært tidligere i kurset til å bygge og trene modeller som vi igjen brukte til å løse en rekker oppgaver. Når modellene så skulle settes i «produksjon», ble tjenesten Azure Machine Learning tatt i bruk, som da altså er en tjeneste til nettopp å trene, distribuere, automatisere og administrere maskinlæringsmodeller.

Turen oppsummert

Alt i alt var vi veldig fornøyde med både med kurset og turen som sådan.

Kurset var intensivt, men lærerikt og bra. Første del var mest interessant for oss i våre nåværende roller, men det var også spennende og nyttig å lære litt om «Data Science»-området. Instruktøren Nico Jacobs var vanvittig dyktig og tydelig erfaren. Han hadde gode svar på alle våre spørsmål.

Bilde fra Brussel

Brussel var en flott by med hyggelige folk og god mat. Det ble ikke mye tid til sightseeing, men vi fikk kikket oss litt om på kveldene og fikk blant annet opplevd attraksjonene «Gran-Place», «Manneken Pis» og «Jeanneke Pis», og smakt nydelig belgisk sjokolade, vafler og øl. Vi besøker gjerne Brussel igjen ved en senere anledning.