I takt med at virksomheder bliver mere og mere afhængige af data til at drive og udvikle deres forretning og ønsker at udføre Machine learning use cases, der kræver en solid datainfrastruktur, bliver rollen som data engineer stadig vigtigere.
Denne ansættelsesguide dækker alt det, du skal vide om data engineering, hvorfor det er blevet en så populær rolle, hvad en data engineer laver, og hvordan du ansætter din næste data engineer.
Om data engineering
Data engineering er processen med at udvikle og konstruere systemer til indsamling, lagring og analyse af data i stor skala. Det er et omfattende område, der anvendes i næsten alle brancher. Data engineering-teams indsamler og administrerer data i store skalaer og bruger deres viden og de rigtige teknologier til at sikre, at dataene er i et brugbart format, når de når frem til dataloger, analytikere og andre forbrugere.
Data engineers opbygger distribuerede systemer, der indsamler, håndterer og konverterer rå data til brugbare oplysninger for datalogiteams, maskinlæring og business intelligence-eksperter, som senere kan bruges i forskellige applikationer.
Data engineers designer og opbygger datapipelines, der transformerer og transporterer store informationsmængder til et yderst anvendeligt format, når de når slutbrugerne. Disse pipelines indsamler typisk data fra forskellige kilder og lagrer dem i et enkelt Data Warehousing- eller Data Lake repository, der repræsenterer dem samlet som en enkelt informationskilde.
Ovenstående diagram illustrerer arbejdsgangen i en dataplatform, de teknologier, der almindeligvis anvendes i hvert trin, og ansvarsområderne for en data engineer. Som du kan se, er der meget arbejde forbundet med data engineering, før det bliver brugt af BI-analytikere eller dataloger. Undersøgelser har vist, at svimlende 80 % af den indsats, der bruges på datadrevne projekter, handler om data engineering for at få data klar til brug, mens 20 % handler om at skabe værdi ud af disse data.
Det er derfor ikke overraskende, at ifølge en Stack Overflow-undersøgelse fra 2021 er lønnen for data engineers i gennemsnit 68.034 dollars om året, hvilket får dette erhverv til at ligge i den øverste del af løntabellerne.
Hvorfor og hvornår har du brug for at ansætte en Data Engineer?
Du skal ansætte en data engineer, hvis du ønsker at opbygge applikationer eller dataplatforme (datawarehouse, data lakes), som kræver, at du henter og konsoliderer data fra forskellige kilder.
Dette behov opstår typisk, når du enten har en Machine Learning use case, der kræver store mængder data, eller når du har brug for et centraliseret repository, der giver dig mulighed for at gemme alle dine strukturerede og ustrukturerede data, også kendt som en Data Lake eller Data Warehouse.
Typer af data engineers
Big Data-centreret (data) engineer
En Big Data-engineer fokuserer på at håndtere store datasæt. Lagringen af dataene sker typisk i distribuerede filsystemer eller object storage systems snarere end i relationelle databaser. For at håndtere de store datamængder bruger en Big Data-engineer databehandlings-frameworks såsom Spark, MapReduce eller Flink. Selv om SQL ofte anvendes, foregår det meste af programmeringen i sprog som Scala, Python eller Java, hvilket gør rollen mere lig en backend-udvikler. En Big Data Engineer bruger typisk ETL-processen (Extract, Transform, Load) og opbygger batch- og streaming datapipelines, som typisk orkestreres af værktøjer som Apache Airflow.
Data engineers med fokus på databaser eller datawarehouse
En database- eller Data Warehouse-centreret data engineer fokuserer primært på at udtrække og omdanne strukturerede data fra relationelle databaser. Processen omfatter brug af et standard-databaseadministrationssystem, tabeldrevet logik og metoder, databaseservere og lagrede procedurer.
Hvad laver en data engineer til dagligt?
En data engineers ansvarsområder og opgaver omfatter typisk:
- Identificering og gennemførelse af nyt design af infrastruktur med henblik på skalerbarhed
- Optimering af dataleveringen
- Samling af store datasæt
- Opbygning af infrastruktur til data extraction og indlæsning af data
- Oprettelse af analytiske værktøjer til datapipeline samt at tilbyde indsigt med henblik på operationel effektivitet
Vi har også spurgt Mehmet Ozan Ünal, data engineer hos Proxify, om de daglige arbejdsopgaver, som denne stilling indebærer, og han svarede:
"Data engineers opretter normalt ETL-pipelines, designer skemaer og overvåger og planlægger pipelines. Et andet afgørende ansvar er at designe og formattere virksomhedens datainfrastrukturer. En data engineer skal forbinde forbindelsen mellem datakilder (f.eks. SAP, IoT (Internet of Things) og app-data) og dataforbrugere (dataanalytikere, datavidenskabsfolk, forretningsfolk, machine learning pipelines, business intelligence og rapporteringssystemer)."
Mehmet Ozan Ünal
Kort fortalt laver en data engineer følgende:
- Udvikling og vedligeholdelse af dataplatforme
- Dybdegående analyse af rå data
- Forbedring af kvaliteten og effektiviteten af alle data
- Udvikling og afprøvning af arkitekturer til extraction og omdannelse af data
- Opbygning af datapipelines
- Opbygning af algoritmer til effektiv databehandling
- Undersøgelse af metoder til sikring af datas pålidelighed
- Supportere i udvikling af analytiske værktøjer
Interview af en data engineer
Vigtige teknologier og programmeringssprog for en data engineer
Mehmet opstiller en liste over de vigtigste teknologier, som en data engineer skal kende:
- Programmeringssprog: SQL og enten Python, Scala eller Java
- Værktøjer og systemer: Datakommunikation: Kafka, Spark, Apache Airflow (til orkestrering af datapipelines), transaktionsdatabaser (MySQL, PostgreSQL), dataformater (Parquet, Protobuf, Avro) Kodning: Versionshåndtering (Git), algoritmer og datastrukturer
- Containerization: CI/CD-systemer og Docker
- Cloud: Azure, GCP eller AWS
De vigtigste værktøjer, som din data engineer bør kende til
Der findes specifikke værktøjer, som gør data engineering mere effektiv. De fem vigtigste er anført nedenfor:
1. Datawarehouses:
- Amazon Redshift: Et cloud-datawarehouse til nem dataopsætning og -skalering.
- Google Big Query: Et cloud-datawarehouse, der er fantastisk til mindre opstartsvirksomheder, som ønsker skalering.
- Snowflake: Et SaaS, der er fuldt administreret, og som giver én platform til flere formål såsom data engineering, data lakes, datawarehousing, udvikling af dataapps og meget mere.
- Apache Spark: En analytisk open source engine, der bruges til at behandle data i stor skala. Det er et open source-projekt, men er også tilgængelig som en webbaseret distribution, der er skabt af grundlæggerne af Spark og som hedder Databricks.
- Google Cloud Data Fusion: En web-brugergrænseflade til oprettelse af integrationsløsninger til skalerbar data med henblik på at forberede og transformere data uden behov for ændring af infrastrukturen.
- Azure Data Factory: En ETL-tjeneste (Extract, Transform, Load) i Azure til oprettelse af dataflows og integrationsdata uden behov for brug af servere.
- Dbt: Data Build Tool, et værktøj til at transformere data direkte i warehouset ved hjælp af kode til den overordnede proces.
4. Data Lake og Lakehouse:
- Databricks: En platform, der er samlet, åben og bruges til alle data, netop til planlagte og interaktive dataanalyser.
- Amazon S3: En tjeneste til objektlagring og skalerbarhed, ydeevne og sikkerhed for data, der er lagret som et objektformat.
- Google Cloud Storage: Google-tjeneste til lagring af objekter og data i Google Cloud: Google Cloud Storage: Google-tjeneste til lagring af objekter og data i Google Cloud.
- Azure Data Lake: Azure Data Lake er en del af Microsoft og er en offentlig platform med tjenester og produkter til analyse af store mængder data.
5. Workflow orchestrators:
- Apache Airflow: Et open source WMS-værktøj (workflow management system) til organisering, planlægning og overvågning af workflows.
- Luigi: En Python-værktøjspakke til opbygning, planlægning og orkestrering af pipelines.
6. Behandling af events og streams:
- Google Cloud Pub/Sub: Messaging med hurtige og øjeblikkelige advarsler og meddelelser, der muliggør parallel behandling og arkitekturer, der er event-drevne.
- Apache Kafka: En eventstore og open source-platform til stream-processing-handlinger.
Tekniske færdigheder hos en data engineer
En data engineer skal have disse vigtige tekniske færdigheder:
- Indsamling af data – håndtering af mængden af data, men også af variationen og hastigheden af data.
- Det er vigtigt at kunne programmere, så de skal have et fremragende kendskab til enten Scala, Java eller Python, som er de mest almindeligt anvendte sprog til data engineering systemer og frameworks.
- Datatransformation – en data engineer skal være velbevandret i transformation, f.eks. rensning (f.eks. fjernelse af dubletter), sammenføjning af data og aggregering af data.
- Data warehousing – ved hvordan man opdeler DW i niveauer og opretter faktatabeller ved at kombinere tabeller og aggregerer dem for at gøre rapporteringen mere effektiv.
- Dataanalyse – ved hvordan man uddrager indsigt fra et datasæt, især når det drejer sig om kvalitetskontrol, f.eks. fordeling af data, kontrol af dubletter osv.
Derudover sagde Mehmet:
"En god data engineer skal have praktisk viden om og erfaring med kodning og datawarehousing. Derudover skal han have kendskab til grundlæggende maskinlæring, grundlæggende datamodellering samt Linux og shell-scripting."
De bedste interviewspørgsmål (og svar) til vurdering af data engineers
En glimrende metode til at vurdere kandidatens tekniske evner er at stille specifikke data engineering-spørgsmål, som vil hjælpe dig med at skille fårene fra bukkene. For at teste og vurdere en data engineers færdigheder og ekspertise og for at finde den bedste kandidat, kan du måske spørge om følgende:
- Fortæl om Hadoop og dets komponenter.
Forventet svar: Hadoop er et framework, open source, der anvendes til praktisk og effektiv lagring og behandling af store datasæt. Disse store datasæt kan variere fra gigabyte til petabyte, og Hadoop giver mulighed for forenklet clustering af sådanne store mængder.
I første omgang er der fire komponenter (1 grundlæggende/almindelig + 3 centrale komponenter) og yderligere dybdegående komponenter, som forklaret nedenfor.
- Hadoop Common – Sættet af grundlæggende Hadoop-standardbiblioteker.
- Hadoop MapReduce – Til behandling af store mængder data.
- Hadoop YARN – til ressourcehåndtering samt opgaveplanlægning.
- HDFS-Hadoop Distributed File System.
Så bruger vi også:
- Hive og Pig – Til dataadgang
- Apache Flume, Chukwa, Sqoop – til dataintegration
- HBase – til datalagring
- Avro og Thrift – Til sterilisering af data
- Drill og Apache Mahout – til dataintelligens
- Oozie, Zookeeper og Ambari – til datahåndtering, orkestrering og overvågning
- Hvad er Block og Block Scanner i HDFS?
Forventet svar: Blokkene i HDFS er datafiler, der har den mindst mulige størrelse, og de er resultatet af Hadoops opdeling af filer af enorm størrelse.
Block Scanner hjælper os med at spore lister, der indeholder blokkene, og identificerer checksum-problemer ved hjælp af throttling (dvs. at en funktion kun udføres én gang, uanset gentagende hændelser).
- Forklar, hvad Reducer er, og hvilke hovedmetoder det er.
Forventet svar: Når vi behandler data i Hadoop, er Mapper det andet trin, og Reducer er det tredje behandlings-stadie.
Reducer har tre hovedmetoder:
- setup() – Med denne kommando kan vi nemt håndtere parametre, cache og angive størrelsen af inputdata.
- cleanup() – Med denne funktion kan vi fjerne de midlertidige filer.
- reduce() – Vi kan kun gøre dette én gang for hver opgavenøgle, og dette er essensen af Reducer.
- Hvordan bruges "args" og "kwargs"?
Forventet svar: Både args og kwargs er funktioner. Hvis vi skal angive og bruge en funktion i en kommandolinje og rækkefølge, bruger vi * args. Hvis vi derimod skal pege på en gruppe af uordnede in-line-argumenter, der overføres til funktioner, bruger vi ** kwargs.
- Sammenlign Star Schema og Snowflake Schema.
Forventet svar: I datamodellering er der to typer skemaer til design: Star Schema og Snowflake Schema.
-
Star Schema har denormaliserede dimensioner eller gentagelse af værdier i én tabel, og det er nemt at skrive forespørgsler uden at skulle skrive flere joints. Det er også let at opsætte og designe. Med Star Schema har vi redundante data gemt i dimensionstabeller. Hvad angår lagerplads, kræver Star Schema mere af den for at opnå hurtig ydelse sammenlignet med Snowflake Schema.
-
Snowflake Schema har en datastruktur, der er normaliseret med hierarkier for dimensioner, der præsenteres pænt i separate tabeller. Dette skema er betydeligt mere komplekst med hensyn til den overordnede vedligeholdelse end Star. Med Snowflake er forespørgselsskrivning ikke forenklet, og vi har brug for flere joins til at sammenkoble ekstra tabeller. Redundante data undgås med Snowflake-skemaet, og dimensionstabellerne er normaliserede. Med Snowflake Schema er der ikke noget stort krav til lagerplads på grund af redundansfaktoren (som er mere betydningsfuld i Star, jf. ovenfor).
- Forklar, hvad Secondary NameNode er, og nævn dens funktioner.
Forventet svar: Secondary NameNode bruges til at modtage logfiler over redigeringsændringer fra en bestemt name node. Dette giver os mulighed for at fastsætte og holde en grænse for logstørrelsen af ændringerne.
Secondary NameNode har følgende funktioner:
- Kontrolpunkt – Vi bruger dette til at bekræfte og sikre, at vi ikke har beskadigede data.
- FsImage – Vi bruger dette, hvis vi har brug for at gemme en kopi af FsImage eller en EditLog-fil.
- Update – Vi bruger Update til en automatisk opdateringsproces af FsImage- og EditLog-filerne.
- NameNode crash – Hvis NameNode faktisk fejler og går ned, kan vi genskabe NameNode ved hjælp af FsImage.
- Kan du nævne og uddybe de forskellige tilgange til datavalidering?
Forventet svar: Vi kan kontrollere følgende punkter, der er anført nedenfor, med datavalideringsmetoderne:
- Data – Kontrol af datatypen gør det muligt at kontrollere dataenes nøjagtighed. Vi kan f.eks. ikke bruge bogstavbaserede data i et felt, der kun accepterer talbaserede data.
- Område – Hvis vi skal kontrollere, om et foruddefineret område indeholder inputdata, foretager vi en områdekontrol.
- Kode – Når vi vælger et bestemt felt fra en værdiliste, skal vi sikre, at listen er gyldig, og at der er korrekt formatering af det pågældende felt, så det gør vi med et kodetjek.
- Format – Vi vil støde på en foruddefineret struktur med en masse datatyper. Med en formatkontrol kontrollerer vi, om alle datoer er i et korrekt format (f.eks. DD/MM-YYYYYY eller YYYYY/MM/DD).
- Unikhed – Med en unikhedskontrol sikrer vi, at der ikke er gentagne posteringer af elementer, der skal være unikke af natur, f.eks. e-mailadresse eller ID-indhold.
- Consistency – Med et consistency-tjek kontrollerer vi, om vi er afhængige af logik, når vi indtaster data, med en klar rækkefølge og et klart hierarki af elementer. F.eks. skal "produktionsdato" for noget efterfølges af en "udgivelsesdato" og ikke omvendt.
- Hvad er DAG i Apache Spark?
Forventet svar: DAG (Directed Acrylic Graph) repræsenterer et sæt af punkter, der anvendes til fortolkning af koder. Dette er en graf, der gemmer og præsenterer hver aktivitet på RDD'en, og det er en fremragende måde at skabe og administrere strømmen af aktiviteter på. Den giver en topologisk orden og sekvensering og en pæn visuel præsentation af RDD'er.
- Hvad er Spark "lazy evaluation"?
Forventet svar: "Lazy evaluation" i Spark repræsenterer en proces, hvor en handling skal startes, ellers vil en proces ikke blive udført. Derfor er Spark ikke alt for aktiv eller involveret, når vi arbejder med transformationer, men når vi initierer en handling, oprettes der en DAG (Directed Acrylic Graph). Naturligvis er alle transformationer langsomme og dovne, så aktiviteter i RDD starter ikke med det samme. Det er her, Spark kan hjælpe - den sender transformationerne til en DAG, der udføres, når der er en dataanmodning fra en driver.
- På hvilken måde er Spark anderledes end Hadoop MapReduce?
Forventet svar: Spark er et værktøj til håndtering af datapipelines, et distribueret behandlingssystem, open source, og bruges til at arbejde med store data. Hadoop MapReduce er et framework til forenklet skrivning af apps, der håndterer store datamængder. Når vi nu sammenligner Spark og Hadoop MapReduce, kan vi konkludere, at Mapreduce behandler dataene på disken, mens Spark behandler dataene i hukommelsen og også beholder dem der. Desuden er MapReduce langsommere, når det gælder behandlingshastighed, sammenlignet med Spark.
- Hvad er forskellen på left, right og inner join?
Forventet svar: Left, Right og Inner join er alle nøgleord i SQL, der bruges til at kombinere rækker i mindst to eller flere tabeller, og når de har en fælles kolonne et sted mellem dem.
- Inner join – Bruges til at vælge alle rækker i alt fra tabellerne. Dette nøgleord kombinerer de rækker i tabellerne, som har samme identiske fælles feltværdi.
- Left join – Dette nøgleord placerer tabellens rækker til venstre for joinet og synkroniserer også rækkerne i tabellen på den højre side.
- Right join – Dette nøgleord bringer rækkerne tilbage i den tabel, der er til højre for sammenføjningen, men synkroniserer rækkerne for tabellen på venstre side. Det ligner meget Left join.
- Kan du definere normalisering af data?
Forventet svar: Det betyder, at data organiseres og defineres i et ensartet format i flere felter og poster. Datanormalisering bidrager til at fjerne data, der ikke er struktureret eller duplikeret, så der kun er data, der er logiske og som bruges.
Mulige udfordringer i forbindelse med ansættelse af en data engineers
Der er altid udfordringer, når man ansætter en ny person, afhængigt af jobbet og jobkravene.
En stor udfordring er, at en data engineers arbejdsområde er blevet stort og forvirrende. Det bør ikke blandes sammen med følgende beslægtede roller:
- Databaseadministrator (DBA), som er mere fokuseret på oprettelse og optimering af OLTP-databaser.
- Dataanalytikere, som typisk er mere fokuserede på at skabe forretningsværdi ved at oprette dashboards og udarbejde ad hoc-rapporter.
- Analytics Engineer, som svarer til en dataanalytikers rolle, men med mere af en softwareingeniørs færdigheder (versionskontrol, CI/CD, brug af Python/Scala/Java) og fokuserer typisk på data warehousing, SQL-pipelines og optimering.
- Machine Learning Engineer, der er dygtig til at sætte ML-modeller, der er udviklet af dataloger, i produktion. Det kræver en dybere forståelse af statistik, algoritmer og matematik. Nogle Data Engineers besidder denne viden, men for et mellemstort til stort datateam bør det være en rolle for sig selv.
Det skal understreges, at ansættende ledere/arbejdsgivere ofte har for vane at tilbyde data engineers en lavere løn eller en løn under markedsværdien. Denne type "udfordring" hører til hos de ansættende ledere, som fejlagtigt fokuserer intenst på alt andet end den langsigtede fordel ved at have en dygtig data engineer i virksomheden.
Hvad adskiller en fantastisk data engineer fra en god?
Det kan være svært at vælge den kandidat, der er bedst egnet til rollen som data engineer, især hvis mindst to kandidater har samme erfaring og ekspertise. En af dem vil dog altid skille sig ud ved hjælp af dybdegående viden, tekniske færdigheder og en proaktiv og dynamisk tankegang.
Den fantastiske data engineer:
-
Skaber løsninger, der er lette at vedligeholde
Hvis der f.eks. er behov for en manuel datamapping for at få dataene renset, skal udvikleren så hardcode værdierne eller oprette en konfigurationsfil, der nemt kan opdateres?
-
Forstår forretningens behov og over-engineerer ikke løsninger
Det er let at falde i fælden og bygge mere komplekse løsninger end nødvendigt. Det kunne f.eks. være at bygge en næsten realtidsstreaming pipeline, når det faktiske behov for dataopdatering er dagligt.
Lad os ikke glemme, at det er særlig vigtigt at være en holdspiller, fordi en data engineer regelmæssigt skal kommunikere med andre i teamet, som har forskellige roller (datalog, dataanalytiker, ML-ingeniør osv.) og andre teams i virksomheden.
Værdien af data engineering
Alle virksomheder kan drage fordel af data engineering, fordi de gør det muligt for virksomhederne at blive mere datadrevne. Det lyder måske vagt, men data engineering er det fundament, du har brug for for at gøre data nøjagtig og let at bruge, og muliggøre avancerede analyser og maskinlæringsbrug. Som nævnt ovenfor bruges 80 % af indsatsen i ethvert dataprojekt på data engineering.
Sammenfattende forklarer Mehmet:
"Data engineers er ansvarlige for at designe det overordnede data flow gennem virksomheden og skabe og automatisere datapipelines til at implementere dette flow."
Med en sådan person eller et sådant team kan en virksomhed stole på dataene og vide, at de er i gode hænder, og at disse data engineers vil indsamle, opbevare og behandle dataene fejlfrit, hvilket er det første skridt på vejen til at blive en datadrevet virksomhed.