Etterhvert som selskaper blir mer avhengige av data for å drive og utvide virksomheten sin, og ønsker å utføre bruk av maskinlæring som krever en solid data infrastruktur, blir rollen som data engineer stadig viktigere.
Denne ansettelsesguiden vil dekke alt du trenger å vite om data engineering, hvorfor det har blitt en så populær rolle, hva en data engineer gjør, og hvordan du vellykket kan ansette din neste data engineer.
Om Data Engineering
Data engineering er prosessen med å utvikle og konstruere store datainnsamlings-, lagrings- og analysesystemer. Det er et stort felt som brukes i nesten alle bransjer. Data engineering team samler inn og administrerer data i stor skala ved å bruke deres kunnskap og de riktige teknologiene for å sikre at dataene er i en nyttig tilstand når de kommer frem til datavitere, analytikere og andre forbrukere.
Data engieers bygger distribuerte systemer som samler inn, håndterer og konverterer rådata til brukbar informasjon for datavitenskapsteam, maskinlæring og business intelligence-eksperter for senere bruk i ulike applikasjoner.
Data engineers designer og bygger datapipelines som transformerer og transporterer store deler av informasjon til et svært brukbart format innen det når sluttbrukerne. Disse pipelinjene samler vanligvis inn data fra forskjellige kilder og lagrer dem i et enkelt data warehousing eller data lake-lager som representerer det enhetlig som en enkelt informasjonskilde.
Diagrammet ovenfor illustrerer arbeidsflyten til en dataplattform, teknologier som vanligvis brukes i hvert trinn, og omfanget av ansvar for en data engineer. Som du kan se, er det mye jobb innen data engineering før det brukes av BI-analytikere eller dataforskere. Studier har vist at svimlende 80 % av innsatsen brukt på datadrevne prosjekter handler om data engineering for å gjøre data klar til bruk, mens 20 % handler om å skape verdi ut av disse dataene.
Så det er ingen overraskelse at ifølge en Stack Overflow undersøkelse fra 2021, havner lønningene til data engineers på $68.034 årlig, i gjennomsnitt. Dermed er dette yrket i den øvre delen av lønnsdiagrammene.
Når og hvorfor trenger du å ansette en Data Engineer?
Du må ansette en data engineer hvis du ønsker å bygge applikasjoner eller dataplattformer (data warehouse, data lakes) som krever at du henter og konsoliderer data som kommer fra ulike kilder.
Dette behovet oppstår vanligvis når enten du har et maskinlæringsbruk som krever store mengder data, eller du har behov for et sentralisert depot som lar deg lagre alle dine strukturerte og ustrukturerte data, også kjent som en Data Lake eller Data Warehouse.
Ulike typer data engineers
Big Data-centric (data) engineer
A Big data engineer fokuserer på å håndtere store datasett. Lagringen av dataene er vanligvis i distribuerte filsystemer eller objektlagringssystemer i stedet for relasjonsdatabaser. For å håndtere datamengdene bruker en Big Data engineer databehandlingsrammeverk som Spark, MapReduce eller Flink. Selv om SQL ofte brukes, gjøres det meste av programmeringen på språk som Scala, Python eller Java, noe som gjør rollen mer lik en backend-utvikler. En Big Data Engineer bruker vanligvis ETL-prosessen (Extract, Transform, Load) og bygger batch- og streamingdatapipelines som vanligvis er orkestrert av verktøy som Apache Airflow.
Database eller Data Warehouse-centric data engineer
En database eller Data Warehouse-centric data engineer fokuserer først og fremst på å trekke ut og transformere strukturerte data fra relasjonsdatabaser. Prosessen inkluderer bruk av et standard databasestyringssystem, tabelldrevet logikk og metoder, databaseservere og lagrede prosedyrer.
Hva gjør en data engineer på daglig basis?
Ansvaret og oppgavene til en data engineer inkluderer vanligvis:
- Identifisere og implementere re-design av infrastruktur for skalerbarhet
- Optimalisering av datalevering
- Sette sammen store sett med data
- Bygge infrastruktur for datautvinning og lasting
- Lage analytiske verktøy for datapipeline og gi innsikt for operasjonell effektivitet
Vi spurte Mehmet Ozan Ünal, en data engineer hos Proxify, om de daglige arbeidsoppgavene som denne stillingen innebærer, og han uttalte:
“Data engineers lager vanligvis ETL-rørledninger og designskjemaer, og overvåker og planlegger pipelines. Et annet viktig ansvar er å designe og formatere datainfrastrukturene for selskapet. En data engineer bør koble forbindelsen mellom datakilder (for eksempel SAP), også IoT (Internet of Things), og appdata) og dataforbrukere (dataanalytikere, dataforskere, forretningsfolk, maskinlæringspipelines, business intelligence og rapportering systemer).”
Mehmet Ozan Ünal
I et nøtteskall gjør en data engineer dette:
- Utvikler og vedlikeholder dataplattformer
- Dybdeanalyserer rådata
- Forbedrer kvaliteten og effektiviteten til alle data
- Utvikler og tester arkitekturer for å trekke ut og transformere data
- Bygger data pipelines
- Bygger algoritmer for å behandle data effektivt
- Forsker på metoder for datapålitelighet
- Gir støtte i utvikling av analyseverktøy
Intervjue en Data Engineer
Viktige teknologier og programmeringsspråk for en data engineer
Mehmet lister opp de viktigste teknologiene en data engineer må kunne:
- Programmingsspråk: SQL og enten Python, Scala eller Java
- Verktøy og systemer: Kafka, Spark, Apache Airflow (for data pipeline orkestrering), Transaksjonsdatabaser (MySQL, PostgreSQL), data formater (Parquet, Protobuf, Avro)Coding: Version Management (Git), Algoritmer og Data Strukturer
- Containerization: CI/CD systems og Docker
- Cloud: Azure, GCP, or AWS
Toppverktøy som data engineeren din bør være kjent med
Det finnes spesifikke verktøy som gjør data engineering mer effektiv. De fem beste er listet opp nedenfor:
1. Data Warehouses:
- Amazon Redshift: Et skydatavarehus for enkelt dataoppsett og skalering.
- Google Big Query: Et skydatavarehus som er flott for mindre start ups som ønsker skalering.
- Snowflake: En SaaS som er fullt administrert, og gir én plattform for flere formål som data engineering, data lakes, data warehousing, data app utvikling med mer.
- Apache Spark: En analysemotor med åpen kildekode som brukes til å behandle data i stor skala. Det er et åpen kildekode-prosjekt, men tilgjengelig som en nettbasert distribusjon laget av grunnleggerne av Spark, kalt Databricks.
- Google Cloud Data Fusion: Et web-UI for å lage integrasjonsløsninger for skalerbare data, for å forberede og transformere data, uten behov for endring av infrastruktur.
- Azure Data Factory: En ETL-tjeneste (Extract, Transform, Load) fra Azure for å lage dataflyter og integreringsdata uten behov for serverbruk.
- Dbt: Data Build Tool, et verktøy for å transformere data direkte i lageret, gjennom bruk av kode for den overordnede prosessen.
4. Data Lake og Lakehouse:
- Databricks: En plattform som er enhetlig, åpen og brukt for all data, nettopp for planlagte og interaktive dataanalyser.
- Amazon S3: En tjeneste for objektlagring og skalerbarhet, ytelse og sikkerhet for data som er lagret som et objektformat.
- Google Cloud storage: Google-tjeneste for lagring av objekter og data i Google-skyen.
- Azure Data Lake: Som en del av Microsoft er Azure Data Lake en offentlig plattform med tjenester og produkter for analyse av big data.
5. Arbeidsflyt orkestratorer:
- Apache Airflow: Et åpen kildekode WMS (workflow management system)-verktøy for organisering, planlegging og overvåking av arbeidsflyter.
- Luigi: En Python-verktøypakke for å bygge, planlegge og orkestrere pipelines.
6. Event- og strømbehandling:
- Google Cloud Pub/Sub: Meldinger med raske og umiddelbare varsler og notiser, muliggjør parallell behandling og arkitekturer som er hendelsesdrevne.
- Apache Kafka: En eventbutikk og åpen kildekode-plattform for strømbehandlingshandlinger.
Teknisk kunnskap hos en Data Engineer
En data engineer må ha disse essensielle tekniske kunnskapene:
- Data collecting – håndtering av datamengden, men også variasjonen og hastigheten.
- Coding – ferdigheter i programmering er avgjørende, så de trenger en utmerket forståelse av enten Scala, Java eller Python som er de mest brukte språkene for Data engineering systemer og rammeverk.
- Data transforming – en data engineer må være godt kjent med å transformere, for eksempel rensing (f.eks. fjerne duplikater), slå sammen data og aggregere dataene.
- Data warehousing – vet hvordan man deler opp DW i nivåer, og lager faktatabeller ved å kombinere tabeller og aggregere dem for å gjøre rapporteringen mer effektiv.
- Data analyzing – vet hvordan man henter innsikt fra et datasett, spesielt når det gjelder kvalitetssjekker, f.eks. distribusjon av data, duplikatsjekker osv.
I tillegg nevnte Mehmet at:
“En god data engineer må ha praktisk kunnskap og erfaring med koding og data warehousing. I tillegg til dette, en grunnleggende maskinlæring, grunnleggende datamodellering og Linux og shell-skripting.”
De beste intervjuspørsmålene (og svarene) for evaluering av Data Engineers
En utmerket tilnærming for å vurdere kandidatens tekniske evner er å stille spesifikke, datatekniske spørsmål som vil hjelpe deg å skille klinten fra hveten. For å teste og vurdere ferdighetene og ekspertisen til en data engineer, og finne den beste kandidaten, kan det være lurt å spørre om:
- Utdyp om Hadoop og dets komponenter.
Forventet svar: Hadooper er et åpen kildekode rammeverk, og brukes til praktisk og effektiv lagring og behandling av store datasett. Disse store settene kan variere fra gigabyte til petabyte størrelsesvariasjoner, og Hadoop gir mulighet for forenklet gruppering av så store volumer.
I utgangspunktet er det fire komponenter (1 grunnleggende/felles + 3 kjernekomponenter) og ytterligere dybdekomponenter, som forklart nedenfor.
- Hadoop Common – Settet med standard, grunnleggende Hadoop-biblioteker.
- Hadoop MapReduce – For behandling av data i stor skala.
- Hadoop YARN – For ressursstyring samt oppgaveplanlegging.
- HDFS – Hadoop Distributed File System.
Vi bruker også:
- Hive og Pig – For datatilgang
- Apache Flume, Chukwa, Sqoop – For dataintegrasjon
- HBase – For datalagring
- Avro og Thrift – For datasterilisering
- Drill and Apache Mahout – For data intelligence
- Oozie, Zookeeper og Ambari – For data -ledelse, orkestrering og overvåking
- Hva er Block & Block Scanner av HDFS?
Forventet svar: Blokkene i HDFS er datafiler som har den minste mulige størrelsen, og de er et resultat av store filer som er splittet av Hadoop.
Block Scanneren hjelper oss med å spore lister som inneholder blokkene og identifisere checksum problemer gjennom struping (utføre en funksjon bare én gang, uavhengig av hendelsesrepetisjoner).
- Forklar hva Reducer er og dens hovedmetoder.
Forventet svar: Når vi behandler data i Hadoop, er Mapper det andre trinnet, og Reducer er det tredje behandlingstrinnet.
Reducer har tre hovedmetoder:
- setup() – Med denne kommandoen kan vi enkelt håndtere parametere, cache og spesifisere størrelsen på inngangsdata.
- cleanup() – Med denne funksjonen kan vi fjerne filene som er midlertidige.
- reduce() – Vi kan kalle dette bare én gang for hver oppgavetast, og dette er essensen av Reducer.
- Hva er bruken av "args" og "kwargs"?
Forventet svar: Både args og kwargs er funksjoner. Hvis vi trenger å spesifisere og bruke en funksjon i en kommandolinje og rekkefølge, bruker vi * args. Om vi trenger å peke på en gruppe av in-line-argumenter, uordnet, som går til funksjoner, bruker vi ** kwargs.
- Sammenlign Star Schema og Snowflake Schema.
Forventet svar: I datamodellering er det to typer skjemaer for design, Star Schema og Snowflake Schema.
-
Star Schema har denormaliserte dimensjoner eller verdigjentakelser i én tabell, og det å skrive queries er enkelt, uten behov for å skrive flere sammenføyninger. Det er også enkelt å sette opp og designe. Med Star Schema har vi overflødig data lagret i dimensjonstabeller. Når det gjelder lagringsplass, krever Star Schema mer av det for rask ytelse, sammenlignet med Snowflake Schema.
-
Snowflake Schema har en datastruktur, normalisert med hierarkier for dimensjoner som er pent presentert i separate tabeller. Dette skjemaet er mer komplekst for generelt vedlikehold enn Star. Med Snowflake er ikke skrivingen av queries forenklet, og vi trenger flere sammenføyninger for å koble til ekstra tabeller. Overflødig data unngås med Snowflake Schema, og dimensjonstabeller er normalisert. Med Snowflake Schema er det ikke noe stort behov for lagringsplass på grunn av redundansfaktoren (som er mer signifikant i Star ovenfor).
- Forklar hva Secondary NameNode er og nevne dens funksjoner.
Forventet svar: Secondary NameNode brukes til å motta logger over redigeringsendringer fra en bestemt name node. Dette gjør det mulig for oss å sette, og beholde, en grense for loggstørrelsen på redigeringene.
Funksjonene til Secondary NameNode er:
- Checkpoint – Vi bruker dette for å bekrefte og forsikre at vi ikke har ødelagte data.
- FsImage – Vi bruker dette hvis vi trenger å lagre en kopi av FsImage eller en EditLog-fil.
- Update – For en automatisk prosess med å oppdatere FsImage- og EditLog-filene, bruker vi Update.
- NameNode crash – I tilfelle NameNode virkelig mislykkes og krasjer, kan vi gjenskape NameNode ved å bruke FsImage.
- Kan du liste opp og utdype om de ulike tilnærmingene til datavalidering?
Forventet svar: Vi kan sjekke følgende punkter oppført nedenfor med datavalideringstilnærmingene:
- Data – Datatypesjekken gir mulighet for nøyaktighetskontroll av dataene. Vi kan for eksempel ikke bruke bokstavbaserte data i et felt som bare aksepterer tallbaserte data.
- Range – Hvis vi trenger å sjekke om et forhåndsdefinert område inneholder inndata, gjør vi en Range check.
- Code – Når vi velger et bestemt felt fra en verdiliste, må vi sørge for at listen er gyldig, og at det er nøyaktig formatering av det feltet, så vi gjør dette med en code check.
- Format – Vi vil møte en forhåndsdefinert struktur med mange datatyper. Med en format check sjekker vi om alle datoer er i riktig format (for eksempel DD/MM-ÅÅÅÅ eller ÅÅÅÅ/MM/DD).
- Uniqueness – Med en uniqueness check sørger vi for at det ikke er gjentatte oppføringer av det som må være unikt av natur, for eksempel e-postadresse eller ID-innhold.
- Consistency – Med en consistency check sjekker vi om vi stoler på logikk når vi legger inn data, med en tydelig rekkefølge og hierarki av elementer. For eksempel bør ‘date of production’ for noe etterfølges av en ‘release date’ og ikke omvendt.
- Hva er DAG i Apache Spark?
Forventet svar: DAG (Directed Acrylic Graph) representerer et Vertices-sett som brukes til kodetolkninger. Dette er en graf som lagrer og presenterer hver operasjon på RDD, og det er en utmerket måte å opprette og administrere flyten av operasjoner. Den tilbyr en topologisk rekkefølge og sekvensering, og en pen visuell presentasjon av RDD-er.
- Hva er Sparks “lazy evaluation”?
Forventet svar: ‘Lazy evaluation’ i Spark representerer en prosess der handling kreves, ellers vil ikke en prosess bli utført. Derfor er ikke Spark for aktiv eller bekymret når vi jobber med transformasjoner, men når vi kaller en handling, opprettes en DAG (Directed Acrylic Graph). Naturligvis er alle transformasjoner trege og late, så operasjoner i RDD starter ikke umiddelbart. Det er her Spark kommer godt med – den sender transformasjonene til en DAG som utføres når det er en dataforespørsel fra en driver.
- På hvilken måte er Spark annerledes sammenlignet med Hadoop MapReduce?
Forventet svar: Spark er et verktøy for datapipeline-håndtering, et distribuert behandlingssystem, åpen kildekode og brukes til å jobbe med big data. Hadoop MapReduce er et rammeverk for forenklet skriving av apper som håndterer et stort omfang av data. Når vi sammenligner Spark og Hadoop MapReduce, kan vi konkludere med at Mapreduce behandler dataene på disken, mens Spark behandler data i minnet, og beholder dem der. MapReduce er tregere når det kommer til prosesseringshastighet, sammenlignet med Spark.
- Hva er forskjellen mellom left, right og inner join?
Forventet svar: Left, Right og Inner join representer alle keywords i SQL, brukes for radkombinering i minimum to eller flere tabeller, og når de har en felles kolonne et sted i mellom dem.
- Inner join – Brukes for valg av alle rader totalt fra tabellene. Dette keywordet kombinerer radene i tabellene som har samme identiske fellesfeltverdi.
- Left join – Dette keywordet plasserer tabellradene til venstre fra sammenføyningen, og synkroniserer også radene på høyre sidetabell.
- Right join – Dette keywordet bringer tilbake radene i den tabellen som er til høyre for sammenføyningen, men synkroniserer radene for venstre sidetabell. Det er ganske likt Left join.
- Kan du definere data normalization?
Forventet svar: Prosessen med å lage rene data er generelt kjent som datanormalisering, det vil si å organisere data og definere dets enhetlige format i flere felt og poster. Datanormalisering bidrar til å fjerne data som ikke er strukturert eller duplisert, og etterlater dermed kun datalagring som er logisk og brukt.
Mulige utfordringer under ansettelsen av en Data Engineer
Det er alltid utfordringer ved ansettelsen av en ny person, avhengig av yrke og stillingskrav.
En stor utfordring er at omfanget av en data engineer har blitt stort og uoversiktlig. Det bør ikke blandes sammen med følgende relaterte roller:
- Database Administrator (DBA) – som er mer fokusert på opprettelse og optimalisering av OLTP-databaser
- Dataanalytikere – som vanligvis er mer fokusert på å skape forretningsverdi ved å lage dashbord og bygge ad-hoc-rapporter.
- Analytics Engineer – som ligner på en dataanalytikers rolle, men som har mer en programvareingeniørs ferdigheter (versjonskontroll, CI/CD, bruk av Python/Scala/Java) og fokuserer vanligvis på data warehousing SQL-pipelines og optimalisering.
- Machine Learning Engineer – som er dyktig i å distribuere ML-modeller bygget av Data Scientists til produksjon. Det krever en dypere forståelse av statistikk, algoritmer og matematikk. Noen data engineers har denne kunnskapen, men for et mellomstort til stort datateam bør dette være en rolle noen har alene.
Det må understrekes at ansettelsesledere/arbeidsgivere ganske ofte har for vane å tilby lavere lønn, eller lønn under markedsverdi, til data engineers. Denne typen «utfordringer» hører hjemme på spektrumsiden til ansettelseslederne, som feilaktig fokuserer intenst på alt annet enn den langsiktige fordelen ved å ha en dyktig data engineer i selskapet.
Hva skiller en dyktig Data Engineer fra en god en?
Det kan være vanskelig å velge den riktige kandidaten som er best egnet for rollen som data engineer, spesielt hvis to kandidater har lignende erfaring og ekspertise. Imidlertid vil man alltid skille seg ut på et eller annet vis, gjennom dybdekunnskap, mestring av tekniske ferdigheter, og en proaktiv, dynamisk måte å tenke på.
En dyktig Data Engineer:
-
Skaper løsninger som er enkle å vedlikeholde.
For eksempel, hvis en manual datamapping er nødvendig for å få dataene renset, hardkoder utvikleren verdiene eller oppretter en konfigurasjonsfil som enkelt kan oppdateres?
-
Forstår forretningsbehov og overutvikler ikke løsninger.
Det er lett å gå i fella ved å bygge mer komplekse løsninger enn nødvendig. Dette kan for eksempel være å bygge en streaming pipeline i nesten sanntid når det faktiske behovet for dataoppdatering er daglig.
La oss ikke glemme at det å være en lagspiller er spesielt viktig fordi en data engineer må regelmessig kommunisere med andre i teamet som har forskjellige roller (Data Scientist, Data Analyst, ML Engineer etc.) og andre bedriftsteam.
Verdien av Data Engineering
Enhver virksomhet kan dra nytte av data engineering fordi de gjør det mulig for bedrifter å bli mer datadrevne. Det høres kanskje vagt ut, men data engineering er grunnlaget du trenger for å gjøre data enkelt konsumert og nøyaktig, og muliggjøre avanserte analyser og brukstilfeller for maskinlæring. Som nevnt ovenfor, brukes 80 % av innsatsen i ethvert dataprosjekt på data engineering.
For å oppsummere, forklarte Mehmet:
“Data engineere er ansvarlige for å designe den overordnede flyten av data gjennom selskapet og opprette og automatisere datapipelines for å implementere denne flyten.”
Med en slik person, eller et slikt team, kan et selskap ha tillitt til og stole på data, og vite at de er i gode hender. Data engineer vil samle inn, lagre og behandle dataene feilfritt, noe som er det første trinnet til å bli et datadrevet selskap.