Mit csinál részletesebben leírva egy junior data engineer? (Többi lent)
Annó elfogadtam a legelső állást ami szembe jött velem + jól fizetett, így lassan egy éve teszteket írok pythonba. A probléma csak az, hogy sose ez volt a célom inkább ugródeszkának szerettem volna használni a lehetőséget, meg a pénz is nagyon jól jött:D
Mindig is vonzott a data engineer dolog, de az lenne a problémám, hogy elképzelni se tudom mit csinálhat egy junior és ez miatt eléggé félek, hogy papíron készen állnék, de aztán megint mélyvíz lenne minden és az első pár hónapban a hétvégém is tanulással menne el, mint ahogy ezen a munkahelyemen is történt...
Természetesen nem a tanulás a gond, így is azt teszem, csak inkább maradnék még n hónapot a mostani pozimban és váltanék később, ha nem állok készent, mint hogy az elején egy merő stressz legyek, non stop tanuljak és alig aludjak valamit.
De tudok, ebből élek konkrétan:D csak teljesen más első kézből hallani, hogy mondjuk egy közepes cég a juniorokkal miket csináltat ilyen poziban. Én a mostani munkám előtt is teljesen felkészültnek éreztem magam és magabiztosnak, mert google alapján mindent is tudtam, aztán a valóságban meg több hónap stressz jött és éjjel-nappal tanulás, mert annyira hiányos volt a tudásom.
Na most ezt szeretném elkerülni és ezért lennék valami közelebbi tapasztalatra kíváncsi.
Én Junior Data Engineer vagyok másfél éve egy multinál, a munka a cégnél ahol dolgozom gyakorlatilag azt takarja, hogy a forrásrendszerekből (értsd: mérőállomások, szenzorok stb...) az adatokat el kell "hozni", majd megfelelő, egységes formátumra konvertálni a konzisztens és költségkímélő tárolás miatt. Ehhez ki van alakítva egy pipeline a megfelelő adatbázis-sémákkal pl: X rendszerben tároljuk az összes beeső "nyers" adatot majd ezeket feldolgozzuk a megfelelő scriptekkel és eltároljuk egy Y rendszerben, azt pedig további scriptekkel optimalizáljuk és továbbtöltjük egy Z adatbázisba (általában a végén az optimalizált tárolás Cloudban történt valamilyen költséghatékony, könnyen feldolgozható formátumban) Data Scientistek, Analystek, üzleti felhasználók, vezetők és ML modellek számára. Igazából az adatok beérkezhetnek bármely formátumban a különböző rendszerekből pl: Kafka, Redis, MQ, MQTT stb... amik generálnak JSON, CSV etc.. kimenetet így ezekre kell fejleszteni Python kódot, hogy ezek megfelelően fel legyenek dolgozva. Igazából a programozása ezeknek a rendszereknek Python / PL/SQL / BASH nyelven történik főleg, de nem kell beleszakadni a munkába, általában akkor van baj, ha valami miatt olyan adat érkezik be, amit az eddig felépített rendszer nem tud feldolgozni és elakad a pipeline feldolgozása során, ekkor általában le kell fejleszteni ezt a funkciót, hogy fel tudja dolgozni. Egyébként a másik része a feladatomnak ennek az egész Big Data pipelinenak az üzemeltetése, ami abban merül ki, hogy bizonyos töltéseket esetleg manuálisan újra kell indítani, ha hálózati vagy egyéb hiba miatt megakadt a feldolgozás (azért párszor volt rá példa, mert elég sok, különféle rendszer kommunikált egymással az adatfolyam során).
Amit eddig leírtam az szerintem nagyjából megtalálható az interneten, de mesélek arról hogy mi az amire én is számítottam és mi az ami tévhit:
-Googlen vagy Youtube-on amikor nézegettem hogy mit is csinál a Data Engineer általában felsorolták hogy "ETL pipeline"-okat készít. Na ez ennél a cégnél ahol dolgozom egyáltalán nem igaz, sosem hoztam létre egyetlen pipelinet sem, ezt az architektek határozták meg, létrehoztak több zónát és meghatározták hogy a különböző zónák között milyen transzformáció mehet végbe amit egységesen minden töltési folyamatnál követünk és úgy fejlesztjük a kódot. Például Stage 1-re behozzuk a forrásrendszerekből az adator és kész. Stage 2-re áttöltjük Stage 1-ről és közben tisztítjuk / transzformáljuk /
érzékeny információkat elhasheljük , Stage 3-ra Stage 2-ről üzleti logikának megfelelő lépést hajtunk végre és így tovább. Én ezekre a különböző zónák (stagek) közötti adatáramlásra írom meg a kódot olyan módon hogy van egy adott Python sablon amiben rengeteg dolog előre van definiálva nekem ezt kell kiegészítenem. Ki van alakítva egy teszt környezet is az éles környezet mintájára ahol tudom tetszőlegesen fejleszteni ezeket a kódokat ha pedig minden rendben van akkor CI/CD folyamat van definiálva a kódhoz és kikerül éles környezetbe a fejlesztésem. A fejlesztés rész nekem abból áll hogy minden meg kell ismernem a forrásból érkező adatnak a struktúráját és az üzleti oldalról az igényt és erre lehetőleg optimális kódot írni mert vannak borzasztóan nagy méretű adatok ahol nagyon nem mindegy a kód minősége hogy mennyi ideig tart a betöltés a forrásrendszertől egészen a végső tároló rétegig ahonnan az end-userek használják az adatokat.
Másik ilyen internetes "tévhit" amit olvastam az az adatmodellezés. Az szintén nem a Data Engineer feladata, nekem megmondják hogy egy adott projekten belül szeretnék hogy X táblában ezek az adatok szerepeljenek Y táblában azok stb... adnak mondjuk 30 táblát hogy ezekbe töltsem az adatokat és nekem csak annyi a dolgom hogy a kódban meghatározom hogy ezek a táblák töltve legyenek és milyen módon kerúljön bele az adat. De nekem Data Engineerként sosem kellett adatmodellezést csinálnom és azon gondolkozni hogy hozom normálformára az adatokat, ez nem rám tartozik én csak a kódot írom hozzá.
Harmadrészt gyakori a bugfix ugyanis előfordul sok esetben hogy olyan adat érkezik aminél kivétel keletkezik és ezt kezelni kell.
Negyedrészt pedig az üzemeltetés részt is át kell látni, adatfolyam-automatizációt végzek az üzleti igények alapján, Shell scripreket írok időzítéssel / load balance-val hogy bizonyos python töltők mikor induljanak és milyen paraméterezéssel (ez eltérhet komplexebb logika mentén is akár pl. az XYZ töltő akkor induljon 123 paraméterrel ha az ABC töltőből az adatok már betöltődtem az AWS tárolóba)
Egyébként még napokat tudnék mesélni róla hogyan működik ez a Data Engineering világ, de úgyis ráérzel ha felvesznek egy helyre dolgozni és lehet hogy ott épp mást kell csinálnod... mindenesetre remélem hasznos volt amit leírtam.
Még annyit hogy ha pályakezdő vagy a területen szerintem a Python mellé érdemes az SQL-t átnézni mert azt szerintem mindenhol használják (és kérik is), ugyanis hiába a BigData és NoSQL koncepció, a mai napig igen sok adatot táblában tárolunk, és a query-ket SQL-ben írjuk. Illetve a Linux parancsokról legyen fogalmad és ismerd az alapokat. A felhőt, Hadoopot, Sparkot és a többit úgyis kitanulod idővel.
Egyébként hobbi projektnek tudok ajánlani egy szerintem hasznosat: vegyél egy olyan szenzort (pl: hőmérő és páratartalommérő) amiből az adatokat át tudod vinni a számítógépre. Itt csinálj 2 vagy több mappát és dolgozd fel ezeket az adatokat például úgy hogy először beérkeznek az adatok a Mappa 1-be itt várakoztatod aztán csinálsz egy olyan Python kódot ami a Mappa 2-be szépen sorrendben, időbélyeggel ellátva egy SQL táblába szúrja ezeket az adatokat mondjuk óránként. (Pl: shell script meghívja a python kódot óránként vagy egyéb módon ütemezed). Aztán létrehozol egy Mappa 3-at ahová mondjuk 2 óránként átviszed az adatokat Mappa 2-ből olyan módon hogy egy új oszlopot származtatsz a hőmérséklet és páratartalom oszlopokból ahol mondjuk összeadod ezt a két értéket. Végül pedig a Mappa 3-ban található adatokat vizualizálod automatikusan pl. matplotlib segítségével vagy kivezeted egy dashboardra. Szerintem ezzel nagyon jól lehet szimulálni hogy miről szól a Data Engineering és milyen a munka enterprise környezetben csak ott nyilván sokkal nagyobb adatmennyiséggel sokkal több rendszerből, jóval komplexebb transzformációkkal és több célt szolgálva.
@3 "Amit eddig leírtam az szerintem nagyjából megtalálható az interneten, de mesélek arról hogy mi az amire én is számítottam és mi az ami tévhit:"
Amiket írtál az telesen jó, viszont a tévhitek ugyancsak beleesnek a data engineering feladatkörébe. Hogy ezekben részt veszel-e, az egyrészt az adott munkahelytől függ, másrészt a szenioritástól. pl ha már van egy ETL, akkor nem fogják megkérni a junior engineert, hogy írjon egy másikat.
Az én csoportomban ezek a feladatok teljesen mindennaposak minden résztvevő számára, habár itt nagyon fontos a domain ismeret (orvosi biológia/genetika, ennek megfelelően mindenkinek szakirányú, legalább MSc végzettsége van), mert annak megfelelően kell modellezni az adatokat. És ugyancsak nagyon fontos a technikai ismeret, hogy a nagyméretű adatszetteken végzett műveletek hatékonyak legyenek. (mi mindent cloud-ban csinálunk)
Az SQL ismeret teljesen alap. Még akkor is, ha nem használsz adatbázist, vannak olyan adatfeldolgozó megoldások, ahol a memóriában létrehozott táblázatok (datafarme-k) között SQL kifejezésekkel végzel műveleteket.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!