I takt med att företag blir mer beroende av data för att driva och expandera sin verksamhet och vill köra maskininlärning som kräver en solid datainfrastruktur blir rollen som data engineer allt viktigare.
Den här anställningsguiden täcker allt du behöver veta om data engineering, varför det har blivit en så populär roll, vad en data engineer gör och hur du anställer din nästa data engineer framgångsrikt.
Om data engineering
Data engineering är processen att utveckla och konstruera storskaliga datainsamlings-, lagrings- och analyssystem. Det är ett stort område som tillämpas i nästan alla branscher. Data engineering-team samlar in och hanterar data i stor skala med hjälp av sin kunskap och rätt teknik för att säkerställa att data är i ett användbart tillstånd när de når dataforskare, analytiker och andra konsumenter.
Vad data engineers gör är att skapa distribuerade system som samlar in, hanterar och konverterar rådata till användbar information för datavetenskapsteam, maskininlärning och Business Intelligence-experter för senare användning i olika program.
Data engineers designar och bygger datapipelines som omvandlar och transporterar stora bitar av information till ett mycket användbart format när den når slutanvändarna. Dessa pipelines samlar vanligtvis in data från olika källor och lagrar dem i ett enda datalager eller en Data Lake-lagringsplats som representerar dem enhetligt som en enda informationskälla.
Diagrammet ovan illustrerar arbetsflödet för en data plattform, tekniker som vanligtvis används i varje steg och ansvarsområdet för en data engineer. Som du kan se går mycket arbete åt data engineering innan det förbrukas av BI-analytiker eller dataforskare. Studier har visat att svindlande 80% av den ansträngning som spenderas på datadrivna projekt handlar om data engineering för att få data redo att användas medan 20% handlar om att skapa värde ur dessa data.
Så det är ingen överraskning att enligt en Stack Overflow-undersökning från 2021 visar att lönerna för en data engineer ligger på en årlig summa av $ 68.034 i genomsnitt, vilket gör att detta yrke ligger i den övre delen av lönediagrammen.
Varför och när behöver du anställa en data engineer?
Du måste anställa en data engineer om du vill skapa program eller dataplattformar (datalager, datasjöar) som kräver att du hämtar och konsoliderar data som kommer från olika källor.
Det här behovet uppstår vanligtvis när du antingen har ett Maskin-inlärningsfall som kräver stora mängder data eller när du behöver en centraliserad lagringsplats som gör att du kan lagra alla dina strukturerade och ostrukturerade data, även kallat Data Lake eller Data Warehouse.
Typer av data engineers
Stor-data-centrering (data) engineer
En stor-data engineer fokuserar på att hantera stora datamängder. Lagringen av data sker vanligtvis i distribuerade filsystem eller objektlagringssystem snarare än relationsdatabaser. För att hantera mängden data använder en stor-data engineer ramverk för databehandling som Spark, MapReduce eller Flink. Även om SQL ofta används görs det mesta av programmeringen på språk som Scala, Python eller Java, vilket gör rollen mer lik en backend-utvecklare. En stor-data engineer använder vanligtvis ETL-processen (Extract, Transform, Load) och skapar batch- och strömmande datapipelines som vanligtvis orkestreras av verktyg som Apache Airflow.
Databas- eller datalager-centrerad data engineering
En databas- eller Datalager-centrerad data engineer fokuserar främst på att extrahera och transformera strukturerad data från relationsdatabaser. Processen här inkluderar användning av ett standarddatabashanteringssystem, tabelldriven logik och metoder, databasservrar och lagrade procedurer.
Vad gör en data engineer dagligen?
En data engineers ansvar och uppgifter omfattar vanligtvis:
- Identifiera och implementera omkonstruktioner av infrastruktur för skalbarhet
- Optimera dataleveransen
- Samla in stora datamängder
- Byggnadsinfrastrukturför extrahering och inläsning av data
- Skapa analysverktyg för datapipelinen och ge insikter för driftseffektivitet
Vi har också frågat Mehmet Ozan Ünal, data engineer på Proxify, om de dagliga arbetsuppgifterna som denna tjänst innebär, och han sa:
"Data engineers skapar vanligtvis ETL-pipelines, designscheman och övervakar och schemalägger pipelines. Ett annat viktigt ansvar är att utforma och forma datainfrastrukturerna för företaget. En data engineer bör länka anslutningen mellan datakällor (till exempel SAP), IoT (Sakernas Internet) och appdata) och datakonsumenter (dataanalytiker, datavetare, affärsmän,maskintillverkare, business intelligence och rapporteringssystem)."
Mehmet Ozan Ünal
I ett nötskal, vad en data engineer gör är:
- Utveckla och underhålla dataplattformar
- Fördjupad analys av rådata
- Förbättra kvaliteten och effektiviteten på all data
- Utveckla och testa arkitekturer för extrahering och transformering av data
- Skapa datapipelines
- Bygga algoritmer för att bearbeta data effektivt
- Forskningsmetoder för datapålitlighet
- Stöd till utvecklingen av analysverktyg
Intervjua en data engineer
Viktiga tekniker och programmeringsspråk för en data engineer
Mehmet listar de bästa teknikerna som en data engineer måste känna till:
- Programmeringsspråk: SQL och antingen Python, Scala eller Java
- Verktyg och system: Kafka, Spark, Apache Airflow (för orkestrering av datapipeline), transaktionsdatabaser (MySQL, PostgreSQL), dataformat (Parquet, Protobuf, Avro) Kodning: Versionshantering (Git), algoritmer och datastrukturer
- Containerization: CI/ CD-system och Docker
- Moln: Azure, GCP eller AWS
De bästa verktygen som din data engineer bör känna till
Det finns specifika verktyg som gör data engineering mer effektiv. De fem bästa listas nedan:
- Amazon Redshift: Ett molndata-warehouse för enkel datainstallation och skalning.
- Google Big Query: Ett molninformationslager som är perfekt för mindre nystartade företag som vill skala.
- Snowflake: En SaaS som är helt hanterad samt tillhandahåller en plattform för flera ändamål som data engineering, datasjöar, data warehousing, utveckling av data-appar och mer.
- Apache Spark: En analysmotor med öppen källkod som används för att bearbeta data i stor skala. Det är ett projekt med öppen källkod men som också är tillgängligt som en webbaserad distribution som skapats av grundarna av Spark som heter Databricks.
- Google Cloud Data Fusion: Ett webbgränssnitt för att skapaintegrationslösningar för skalbara data för att förbereda och transformera data, utan att infrastrukturen behöver ändras.
- Azure Data Factory: En ETL-tjänst (Extract, Transform, Load) i Azure för att skapa dataflöden och integreringsdata utan behov av serveranvändning.
3. Omvandling av data:
- Dbt: Data Build Tool, ett verktyg för att transformera data direkt i lagret, genom användning av kod för den övergripande processen.
4. Data Lake och Lakehouse:
- Databricks: En plattform som är enhetlig, öppen och använd för alla data, exakt för schemalagda och interaktiva dataanalyser.
- Amazon S3: En tjänst för objektlagring och skalbarhet, prestanda och säkerhet för data som lagras som ett objektformat.
- Google Cloud Storage: Googles tjänst för lagring av objekt och data i Google-molnet.
- Azure Data Lake: Som en del av Microsoft är Azure Data Lake en offentlig plattform med tjänster och produkter för analys av stordata.
5. Arbetsflödesorkestrerare:
- Apache Airflow: Ett WMS-verktyg (arbetsflödeshanteringssystem) med öppen källkod för att organisera, schemalägga och övervaka arbetsflöden.
- Luigi: Ett Python-verktygspaket för att skapa, schemalägga och orkestrera pipelines.
6. Händelse- och stream-bearbetning:
- Google Cloud Pub / Sub: Messaging med snabba och omedelbara varningar och aviseringar, vilket möjliggör parallell bearbetning och arkitekturer som är händelsedrivna.
- Apache Kafka: Ett händelsearkiv och en plattform med öppen källkod för stream-bearbetningsåtgärder.
Tekniska färdigheter hos en data engineer
En data engineer måste ha dessa viktiga tekniska färdigheter:
- Datainsamling – hantering av datavolymen, men också variationen och hastigheten
- Kodning – kunskaper i programmering är avgörande, så de behöver ett utmärkt grepp om antingen Scala, Java eller Python som är de vanligaste språken för data engineering-system och ramverk.
- Datatransformering – en data engineer måste vara väl insatt i att omvandla till exempel rensning (ta bort dubbletter) och sammanfoga och aggregera data.
- Informationslager – veta hur man delar upp DW i nivåer och skapar faktatabeller genom att kombinera tabeller och aggregera dem för att göra rapporteringen mer effektiv.
- Dataanalys – veta hur man hämtar insikter från en datauppsättning, särskilt när det gäller kvalitetskontroller, t.ex. distribution av data, dubblettkontroller etc.
Dessutom sa Mehmet:
"En bra data engineer måste ha praktisk kunskap och erfarenhet av kodning och datalagring. Tillsammans med detta, grundläggande maskininlärning, grundläggande datamodellering och Linux- och skalskript."
De vanligaste intervjufrågorna (och svaren) för att bedöma en data engineer
Ett utmärkt sätt att bedöma kandidatens tekniska möjligheter är att ställa data engineering-specifika frågor som hjälper dig att skilja åt de utmärkta och de hyfsade. För att testa och bedöma en data engineers färdigheter och expertis och hitta den bästa kandidaten kan du vill fråga om:
- Vidareutveckla angående Hadoop och dess komponenter.
Förväntat svar: Hadoop är ett ramverk med öppen källkod och används för praktisk och effektiv lagring och bearbetning av stora datamängder. Dessa stora uppsättningar kan sträcka sig från gigabyte till petabyte i storlek, och Hadoop möjliggör förenklad klustring av så stora volymer.
Inledningsvis finns det fyra komponenter (1 grundläggande/vanliga + 3 kärnkomponenter) och ytterligare djupgående komponenter, som förklaras nedan.
- Hadoop Common – uppsättning av grundläggande Hadoop-standardbibliotek.
- Hadoop MapReduce – för bearbetning av storskaliga data.
- Hadoop YARN – för resurshantering och schemaläggning av aktiviteter.
- HDFS – Hadoop-distribuerat filsystem
Sedan använder vi också:
- Hive och Pig – för dataåtkomst
- Apache Flume, Chukwa, Sqoop – för dataintegrering
- HBase – för datalagring
- Avro och Thrift – för datasterilisering
- Drill och Apache Mahout – för dataintelligens
- Oozie, Zookeeper och Ambari – För datahantering, orkestrering och övervakning
- Vad är Block & Block Scanner av HDFS?
Förväntat svar: Blocken i HDFS är datafiler som har minsta möjliga storlek, och de är resultatet av filer i enorm storlek som delas av Hadoop.
Block Scanner hjälper oss att spåra listor som innehåller blocks och identifierar kontrollsummaproblem genom strypning (kör en funktion endast en gång, oavsett händelserepetitioner).
- Förklara vad Reducer är och dess huvudsakliga metoder.
Förväntat svar: När vi bearbetar data i Hadoop är Mapper det andra steget och Reducer är det tredje bearbetningssteget.
Reducer har tre huvudmetoder:
- setup() – Med det här kommandot kan vi enkelt hantera parametrar, cache och ange storleken på input-data.
- cleanup() – Med den här funktionen kan vi ta bort de filer som är tillfälliga.
- reduce() — Vi kan framkalla detta en gång för varje uppgiftsnyckel, och detta är kärnan i Reducer.
- Vad är användningen av args och kwargs?
Förväntat svar: Både args och kwargs är funktioner. Om vi behöver ange och använda en funktion i en kommandorad och ordning använder vi * args. Annars om behöver vi peka på en grupp oordnade in-line-argument, som övergår till funktioner, använder vi ** kwargs.
- Jämför Stjärnschema och Snöflingeschema.
Förväntat svar: I datamodellering finns det två typer av scheman för mönster, Star Schema och Snowflake Schema.
-
Star Schema har denormaliserade dimensioner eller värden upprepning i en tabell, och det är enkelt att skriva frågor utan att behöva skriva fler joins. Det är också enkelt att installera och designa. Med Star Schema har vi överflödig data lagrade i dimensionstabeller. När det gäller lagringsutrymme kräver Star Schema mer av det för snabb prestanda jämfört med Snowflake Schema.
-
Snowflake Schema har en datastruktur som är normaliserad med hierarkier för dimensioner som presenteras snyggt i separata tabeller. Det här schemat är betydligt mer komplext för övergripande underhåll än Star. Med Snowflake förenklas inte frågeskrivningen, och vi behöver fler kopplingar för att länka extra-tabeller. Överflödiga data undviks med Snowflake Schema och dimensionstabeller normaliseras. Med Snowflake Schema finns det inget stort lagringsutrymme på grund av faktorn vad gäller överflödiga data (vilket är mer betydelsefullt i Star).
- Förklara vad Secondary NameNode är och nämn dess funktioner.
Förväntat svar: Sekundär NameNode används för att ta emot loggar över redigeringsändringar från en specifik namnnod. Detta gör att vi kan ställa in och hålla en gräns för loggstorleken på redigeringarna.
Funktionerna för Secondary NameNode är:
- Kontrollpunkt – vi använder detta för att bekräfta och försäkra oss om att vi inte har skadade data.
- FsImage – Vi använder detta om vi behöver spara en kopia av FsImage eller en EditLog-fil.
- Update – för en automatisk uppdatering av FsImage- och EditLog-filerna använder vi Update.
- NameNode-krasch – om NameNode verkligen misslyckas och kraschar kan vi återskapa NameNode genom att använda FsImage.
- Kan du lista och utveckla de olika metoderna för datavalidering?
Förväntat svar: Vi kan kontrollera följande punkter nedan med datavalideringsmetoderna:
- Data – datatypskontrollen möjliggör noggrannhetskontroll av data. Så till exempel kan vi inte använda bokstavsbaserade data i ett fält som bara skulle acceptera sifferbaserade data.
- Range – om vi behöver kontrollera om ett fördefinierat intervall innehåller input-data gör vi en intervallkontroll.
- Kod – när vi väljer ett visst fält från en värdelista måste vi se till att listan är giltig och att fältet formateras korrekt, så vi gör detat med en kodkontroll.
- Format – Vi kommer att stöta på en fördefinierad struktur med många olika datatyper. Med en formatkontroll kontrollerar vi att alla datum är i rätt format (DD/MM-ÅÅÅÅ eller ÅÅÅÅ/MM/DD, till exempel).
- Unikhet – Med en unikhetskontroll ser vi till att det inte finns några repetitiva objektposter för objekt som är unika av naturen, till exempel e-postadress eller ID-innehåll.
- Konsekvens – Med en konsekvenskontroll kontrollerar vi om vi förlitar oss på logik när vi anger data, med en tydlig ordning och hierarki av objekt. Till exempel bör "produktionsdatum" för något följas av ett "release-datum", och inte tvärtom.
- Vad är DAG i Apache Spark?
Förväntat svar: DAG (Directed Acrylic Graph) representerar en Vertices-uppsättning som används för kodtolkningar. Detta är ett diagram som lagrar och presenterar varje operation på RDD, och det är ett utmärkt sätt att skapa och hantera flödet av åtgärder. Det erbjuder en topologisk ordning och sekvensering och en snygg visuell presentation av RDD:er.
- Vad är Spark "lazy evaluation"?
Förväntat svar: "Lazy evaluation" i Spark representerar en process där en åtgärd måste anropas, då en process annars inte kommer att köras. Därför är Spark inte så aktiv eller bekymrad när vi arbetar med transformationer, men när vi åkallar en åtgärd skapas en DAG (Directed Acrylic Graph). Naturligtvis är transformationerna långsamma och lata, så operationer i RDD startas inte omedelbart. Det är då Spark är praktiskt – det skickar omvandlingarna till en DAG som körs när det finns en databegäran från en drivrutin.
- På vilket sätt är Spark annorlunda när det sammankopplas till Hadoop MapReduce?
Förväntat svar: Spark är ett verktyg för hantering av datapipeline, ett distribuerat bearbetningssystem, med öppen källkod och används för att arbeta med stordata. Hadoop MapReduce är ett ramverk för förenklad skrivning av appar som hanterar ett stort antal data. När vi nu jämför Spark och Hadoop MapReduce kan vi dra slutsatsen att MapReducer bearbetar data på disken, men Spark bearbetar data i minnet och behåller dem även där. MapReduce är också långsammare när det gäller bearbetningshastighet jämfört med Spark.
- Vad är skillnaden mellan vänster, höger och inre anslutning?
Förväntat svar: Left, Right och Inner join representerar alla nyckelord i SQL, som används för radkombination i minst två eller flera tabeller, och när de har en gemensam kolumn någonstans mellan dem.
- Inner join – används för att markera alla rader helt och hållet från tabellerna. Det här nyckelordet kombinerar raderna i tabellerna som har samma identiska gemensamma fältvärde.
- Left join – det här nyckelordet placerar tabellraderna till vänster från kopplingen och synkroniserar även raderna i den högra sidotabellen.
- Right join – det här nyckelordet tar tillbaka raderna i tabellen som finns till höger om kopplingen, men synkroniserar raderna för tabellen till vänster. Det är ganska likt Left join.
- Kan du definiera datanormalisering?
Förväntat svar: Processen att skapa rena data är allmänt känd som datanormalisering, dvs. att organisera data och definiera dess enhetliga format i flera fält och poster. Datanormalisering bidrar till att ta bort data som inte är strukturerade eller duplicerade, vilket innebär att endast datalagring som är logisk och som används lämnas kvar.
Möjliga utmaningar under anställningen av en data engineer
Det finns alltid utmaningar när man anställer en ny person, beroende på yrke och jobbkrav.
En stor utmaning är att omfattningen av data engineer:ens roll har blivit så stor och förvirrande. Det bör inte blandas ihop med följande relaterade roller:
- Databasadministratör (DBA) som är mer fokuserad på att skapa och optimera OLTP-databaser.
- Dataanalytiker som vanligtvis är mer inriktade på att driva affärsvärde genom att skapa instrumentpaneler och skapa ad hoc-rapporter.
- Analytics Engineer som liknar en dataanalytikers roll men med mer av en mjukvaruingenjörs kompetensuppsättning (versionskontroll, CI/CD, användning av Python/Scala/Java) och fokuserar vanligtvis på SQL-pipelines och optimering av datalager.
- Maskininlärningsingenjör som är skicklig på att distribuera ML-modeller som byggts in av dataforskare i produktion. Det kräver en djupare förståelse för statistik, algo och matematik. Vissa data engineers har denna kunskap, men för ett medelstort till stort datateam bör det vara en roll på egen hand.
Det måste betonas att anställande chefer/arbetsgivare ganska ofta har för vana att erbjuda en lägre lön eller en lön under marknadsvärdet till en data engineer. Denna typ av "utmaning" hör hemma på spektrumsidan av de anställande cheferna, som felaktigt fokuserar på allt annat än den långsiktiga fördelen med att ha en skicklig data engineer i företaget.
Vad skiljer en utmärkt data engineer från en bra sådan?
Det kan vara svårt att välja rätt kandidat som är bäst för rollen som data engineer, särskilt om minst två kandidater har liknande erfarenhet och expertis. Men man kommer alltid att sticka ut med fördjupad kunskap, genom att behärska tekniska färdigheter och med ett proaktivt, dynamiskt sätt att tänka på.
Den store data engineeren:
-
Skapar lösningar som är lätta att underhålla.
Till exempel, om en manuell datamappning krävs för att få data rensade, hårdkodar utvecklaren värdena eller skapar hen en konfigurationsfil som enkelt kan uppdateras?
-
Förstår affärsbehov och överkonstruerar inte lösningar.
Det är lätt att hamna i fällan att bygga mer komplexa lösningar än vad som behövs. Detta kan till exempel vara att skapa en pipeline nästan i realtid för streaming när den faktiska data-uppdateringen behöver ske dagligen.
Låt oss inte glömma att det är särskilt viktigt att vara en lagspelare eftersom en data engineer regelbundet måste kommunicera med andra i teamet som har olika roller (Data Scientist, Data Analyst, ML Engineer osv.) och andra företagsteam.
Värdet av data engineering
Alla företag kan dra nytta av data engineering eftersom de gör det möjligt för företag att bli mer datadrivna. Det kanske låter vagt men data engineering är grunden du behöver för att göra data enkla att konsumera och vara korrekta, samt möjliggöra avancerade analys- och maskininlärningsanvändningsfall. Som nämnts ovan spenderas 80% av ansträngningen i ett dataprojekt på data engineeringen.
Sammanfattningsvis förklarar Mehmet:
"En data engineer ansvarar för att utforma det övergripande flödet av data genom företaget och skapar samt automatiserar datapipelines för att implementera detta flöde."
Med en sådan individ eller team kan ett företag lita på dessa data och veta att det är i goda händer och att dessa data engineers kommer att samla in, lagra och bearbeta dessa data felfritt, vilket är det första steget till att bli ett datadrivet företag.