Kas ir datu inženieri un kā par tiem kļūt?

Sveiks atkal! Raksta nosaukums runā pats par sevi. Gaidot kursu sākumu Datu inženieris Mēs iesakām izprast, kas ir datu inženieri. Rakstā ir daudz noderīgu saišu. Priecīgu lasīšanu.

Kas ir datu inženieri un kā par tiem kļūt?

Vienkāršs ceļvedis, kā noķert datu inženierijas vilni un neļaut tam ievilkt jūs bezdibenī.

Šķiet, ka mūsdienās ikviens vēlas kļūt par datu zinātnieku. Bet kā ar datu inženieriju? Būtībā tas ir sava veida datu analītiķa un datu zinātnieka hibrīds; Datu inženieris parasti ir atbildīgs par darbplūsmu, apstrādes cauruļvadu un ETL procesu pārvaldību. Šo funkciju nozīmīguma dēļ šis šobrīd ir vēl viens populārs profesionālais žargons, kas aktīvi uzņem apgriezienus.

Augstās algas un milzīgais pieprasījums ir tikai maza daļa no tā, kas padara šo darbu ārkārtīgi pievilcīgu! Ja vēlaties pievienoties varoņu rindām, nekad nav par vēlu sākt mācīties. Šajā ierakstā esmu apkopojis visu nepieciešamo informāciju, lai palīdzētu jums spert pirmos soļus.

Tātad, sāksim!

Kas ir datu inženierija?

Godīgi sakot, nav labāka izskaidrojuma par šo:

"Zinātnieks var atklāt jaunu zvaigzni, bet nevar izveidot. Viņam būs jālūdz inženierim to izdarīt viņa vietā."

– Gordons Lindsijs Glegs

Tādējādi datu inženiera loma ir diezgan nozīmīga.

Kā norāda nosaukums, datu inženierija ir saistīta ar datiem, proti, to piegādi, uzglabāšanu un apstrādi. Attiecīgi inženieru galvenais uzdevums ir nodrošināt uzticamu datu infrastruktūru. Ja skatāmies uz AI vajadzību hierarhiju, datu inženierija aizņem pirmos 2–3 posmus: vākšana, pārvietošana un uzglabāšana, datu sagatavošana.

Kas ir datu inženieri un kā par tiem kļūt?

Ko dara datu inženieris?

Līdz ar lielo datu parādīšanos atbildības apjoms ir krasi mainījies. Ja iepriekš šie eksperti rakstīja lielus SQL vaicājumus un destilēja datus, izmantojot tādus rīkus kā Informatica ETL, Pentaho ETL, Talend, tad tagad prasības datu inženieriem ir pieaugušas.

Lielākajai daļai uzņēmumu ar atklātām vakancēm datu inženiera amatam ir šādas prasības:

  • Teicamas SQL un Python zināšanas.
  • Pieredze ar mākoņa platformām, īpaši Amazon Web Services.
  • Vēlamas Java/Scala zināšanas.
  • Laba izpratne par SQL un NoSQL datu bāzēm (datu modelēšana, datu glabāšana).

Paturiet prātā, ka tie ir tikai svarīgākie. No šī saraksta var pieņemt, ka datu inženieri ir speciālisti programmatūras izstrādes un aizmugursistēmas jomā.
Piemēram, ja uzņēmums sāk ģenerēt lielu datu apjomu no dažādiem avotiem, jūsu kā datu inženiera uzdevums ir organizēt informācijas vākšanu, apstrādi un uzglabāšanu.

Šajā gadījumā izmantoto rīku saraksts var atšķirties, tas viss ir atkarīgs no šo datu apjoma, to saņemšanas ātruma un neviendabīguma. Lielākā daļa uzņēmumu vispār nenodarbojas ar lielajiem datiem, tāpēc kā centralizētu repozitoriju, tā saukto datu noliktavu, varat izmantot SQL datu bāzi (PostgreSQL, MySQL utt.) ar nelielu skriptu kopu, kas ievada datus noliktava.

Tādiem IT gigantiem kā Google, Amazon, Facebook vai Dropbox ir augstākas prasības: Python, Java vai Scala zināšanas.

  • Pieredze ar lielajiem datiem: Hadoop, Spark, Kafka.
  • Algoritmu un datu struktūru zināšanas.
  • Izpratne par sadalīto sistēmu pamatiem.
  • Pieredze ar tādiem datu vizualizācijas rīkiem kā Tableau vai ElasticSearch tiks uzskatīta par priekšrocību.

Tas nozīmē, ka ir skaidra pāreja uz lielajiem datiem, proti, to apstrādē lielās slodzēs. Šiem uzņēmumiem ir paaugstinātas prasības attiecībā uz sistēmas kļūdu toleranci.

Datu inženieri vs. datu zinātnieki

Kas ir datu inženieri un kā par tiem kļūt?
Labi, tas bija vienkāršs un smieklīgs salīdzinājums (nekā personīga), bet patiesībā tas ir daudz sarežģītāk.

Pirmkārt, jums jāzina, ka datu zinātnieka un datu inženiera lomu un prasmju noteikšanā ir daudz neskaidrību. Tas nozīmē, ka jūs varat viegli sajaukt, kādas prasmes ir nepieciešamas, lai būtu veiksmīgs datu inženieris. Protams, ir noteiktas prasmes, kas pārklājas ar abām lomām. Taču ir arī vairākas diametrāli pretējas prasmes.

Datu zinātne ir nopietns bizness, taču mēs virzāmies uz funkcionālo datu zinātnes pasauli, kurā praktiķi var veikt savu analīzi. Lai iespējotu datu cauruļvadus un integrētas datu struktūras, ir nepieciešami datu inženieri, nevis datu zinātnieki.

Vai datu inženieris ir vairāk pieprasīts nekā datu zinātnieks?

- Jā, jo pirms burkānu kūkas gatavošanas vispirms jāsavāc, jānomizo un jāsaliek burkāni!

Datu inženieris programmēšanu saprot labāk nekā jebkurš datu zinātnieks, bet, runājot par statistiku, ir gluži pretējais.

Bet šeit ir datu inženiera priekšrocība:

Bez viņa prototipa modeļa vērtība, kas visbiežāk sastāv no šausmīga kvalitātes koda gabaliņa Python failā, kas iegūts no datu zinātnieka un kaut kā rada rezultātu, tiecas uz nulli.

Bez datu inženiera šis kods nekad nekļūs par projektu un neviena biznesa problēma netiks efektīvi atrisināta. Datu inženieris mēģina to visu pārvērst produktā.

Pamatinformācija, kas jāzina datu inženierim

Kas ir datu inženieri un kā par tiem kļūt?

Tātad, ja šis darbs izceļ gaismu tevī un tu esi entuziasma pilns – tu vari to apgūt, vari apgūt visas nepieciešamās prasmes un kļūt par īstu rokzvaigzni datu inženierijas jomā. Un, jā, jūs varat to izdarīt pat bez programmēšanas prasmēm vai citām tehniskām zināšanām. Tas ir grūti, bet iespējams!

Kādi ir pirmie soļi?

Jums vajadzētu būt vispārējam priekšstatam par to, kas ir kas.

Pirmkārt, datu inženierija attiecas uz datorzinātnēm. Konkrētāk, jums ir jāsaprot efektīvi algoritmi un datu struktūras. Otrkārt, tā kā datu inženieri strādā ar datiem, ir jāsaprot datu bāzu darbības principi un to pamatā esošās struktūras.

Piemēram, parastās B-tree SQL datu bāzes ir balstītas uz B-Tree datu struktūru, kā arī mūsdienu izplatītajās repozitorijās LSM-Tree un citas jaucējtabulu modifikācijas.

*Šīs darbības ir balstītas uz lielisku rakstu Adilja Khashtamova. Tāpēc, ja zini krievu valodu, atbalsti šo autoru un lasi viņa amats.

1. Algoritmi un datu struktūras

Izmantojot pareizo datu struktūru, var ievērojami uzlabot algoritma veiktspēju. Ideālā gadījumā mums visiem savās skolās būtu jāmācās par datu struktūrām un algoritmiem, taču tas reti tiek apskatīts. Jebkurā gadījumā nekad nav par vēlu iepazīties.
Tātad, šeit ir mani iecienītākie bezmaksas kursi datu struktūru un algoritmu apguvei:

Turklāt neaizmirstiet par Tomasa Kormena klasisko darbu pie algoritmiem - Ievads algoritmos. Šī ir lieliska atsauce, kad nepieciešams atsvaidzināt atmiņu.

  • Lai uzlabotu savas prasmes, izmantojiet Leetcode.

Varat arī ienirt datu bāzu pasaulē ar pārsteidzošiem video no Kārnegija Melona universitātes vietnē Youtube:

2. Apgūstiet SQL

Visa mūsu dzīve ir dati. Un, lai iegūtu šos datus no datu bāzes, jums ir "jārunā" vienā valodā ar to.

SQL (strukturētā vaicājuma valoda) ir saziņas valoda datu domēnā. Neatkarīgi no tā, ko kāds saka, SQL ir dzīvojis, ir dzīvs un dzīvos ļoti ilgu laiku.

Ja esat ilgu laiku nodarbojies ar izstrādi, droši vien esat pamanījis, ka periodiski uznirst baumas par SQL nenovēršamo nāvi. Valoda tika izstrādāta 70. gadu sākumā un joprojām ir ļoti populāra analītiķu, izstrādātāju un vienkārši entuziastu vidū.
Bez zināšanām par SQL datu inženierijā nav ko darīt, jo jums neizbēgami būs jāizveido vaicājumi, lai izgūtu datus. Visas mūsdienu lielās datu noliktavas atbalsta SQL:

  • Amazones sarkanā nobīde
  • HP Vertica
  • Orākuls
  • SQL Server

... un daudzi citi.

Lai analizētu lielu datu slāni, kas glabājas sadalītās sistēmās, piemēram, HDFS, tika izgudroti SQL dzinēji: Apache Hive, Impala utt. Redziet, tas nekur nepazudīs.

Kā iemācīties SQL? Vienkārši dariet to praksē.

Lai to izdarītu, es ieteiktu apskatīt lielisku pamācību, kas, starp citu, ir bezmaksas no Režīmu analīze.

  1. Vidēja līmeņa SQL
  2. Datu savienošana SQL

Šos kursus īpašus padara tas, ka tajos ir interaktīva vide, kurā varat rakstīt un palaist SQL vaicājumus tieši savā pārlūkprogrammā. Resurss Mūsdienu SQL nebūs lieki. Un jūs varat izmantot šīs zināšanas Leetcode uzdevumi sadaļā Datubāzes.

3. Programmēšana Python un Java/Scala

Kāpēc jums vajadzētu apgūt Python programmēšanas valodu, es jau rakstīju rakstā Python vs R. Labākā rīka izvēle AI, ML un datu zinātnei. Runājot par Java un Scala, lielākā daļa rīku milzīga datu apjoma glabāšanai un apstrādei ir rakstīti šajās valodās. Piemēram:

  • Apache Kafka (Scala)
  • Hadoop, HDFS (Java)
  • Apache Spark (Scala)
  • Apache Cassandra (Java)
  • HBase (Java)
  • Apache Hive (Java)

Lai saprastu, kā šie rīki darbojas, jums jāzina valodas, kurās tie ir rakstīti. Scala funkcionālā pieeja ļauj efektīvi risināt paralēlas datu apstrādes problēmas. Python diemžēl nevar lepoties ar ātrumu un paralēlu apstrādi. Kopumā vairāku valodu un programmēšanas paradigmu zināšanas ir labas problēmu risināšanas pieeju plašumam.

Lai ienirt Scala valodā, varat lasīt Programmēšana programmā Scala no valodas autora. Twitter publicēja arī labu ievada ceļvedi - Scala skola.

Kas attiecas uz Python, es uzskatu Brīvi pārvalda Python labākā vidējā līmeņa grāmata.

4. Rīki darbam ar lielajiem datiem

Šeit ir saraksts ar populārākajiem rīkiem lielo datu pasaulē:

  • Apache Spark
  • Apache Kafka
  • Apache Hadoop (HDFS, HBase, Hive)
  • Apache Cassandra

Plašāku informāciju par lielu datu bloku izveidi varat atrast šajā apbrīnojamajā rakstā interaktīva vide. Populārākie instrumenti ir Spark un Kafka. Tos noteikti ir vērts pētīt, vēlams saprast, kā tie darbojas no iekšpuses. Džejs Kreps (Kafkas līdzautors) 2013. gadā publicēja monumentālu darbu Žurnāls: kas katram programmatūras izstrādātājam būtu jāzina par reāllaika datu apkopošanas abstrakcijuStarp citu, galvenās idejas no šī Talmuda tika izmantotas, lai izveidotu Apache Kafka.

5. Mākoņu platformas

Kas ir datu inženieri un kā par tiem kļūt?

Vismaz vienas mākoņu platformas zināšanas ir datu inženiera amata pretendentu pamatprasību sarakstā. Darba devēji dod priekšroku Amazon Web Services, ar Google mākoņa platformu otrajā vietā un Microsoft Azure noslēdzot labāko trīs.

Jums ir jābūt labām zināšanām par Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Sadalītās sistēmas

Darbs ar lielajiem datiem nozīmē neatkarīgi strādājošu datoru klasteru klātbūtni, starp kuriem saziņa tiek veikta tīklā. Jo lielāks ir klasteris, jo lielāka ir tā dalībnieku mezglu atteices iespējamība. Lai kļūtu par lielisku datu zinātnieku, jums ir jāsaprot izplatīto sistēmu problēmas un esošie risinājumi. Šī teritorija ir sena un sarežģīta.

Endrjū Tanenbaums tiek uzskatīts par pionieri šajā jomā. Tiem, kas nebaidās no teorijas, iesaku viņa grāmatu "Sadalītās sistēmas", tas var šķist biedējoši iesācējiem, taču tas patiešām palīdzēs jums uzlabot savas prasmes.

Es uzskatu Martin Kleppmann datu ietilpīgu lietojumprogrammu projektēšana labākā ievada grāmata. Starp citu, Martinam ir brīnišķīgs blog. Viņa darbs palīdzēs sistematizēt zināšanas par modernas infrastruktūras izveidi lielo datu uzglabāšanai un apstrādei.
Tiem, kam patīk skatīties video, ir kursi Youtube Izkliedētās datorsistēmas.

7. Datu cauruļvadi

Kas ir datu inženieri un kā par tiem kļūt?

Datu cauruļvadi ir kaut kas tāds, bez kā jūs nevarat iztikt kā datu inženieris.

Lielāko daļu laika datu inženieris izveido tā saukto datu cauruļvadu, tas ir, viņš izveido procesu datu nogādāšanai no vienas vietas uz otru. Tie varētu būt pielāgoti skripti, kas pāriet uz ārēja pakalpojuma API vai veic SQL vaicājumu, papildina datus un ievieto tos centralizētā veikalā (datu noliktavā) vai nestrukturētā datu krātuvē (datu ezeri).

Rezumējot: pamata kontrolsaraksts datu inženierim

Kas ir datu inženieri un kā par tiem kļūt?

Rezumējot, ir nepieciešama laba izpratne par tālāk norādīto.

  • Informācijas sistēmas;
  • Programmatūras izstrāde (Agile, DevOps, Design Techniques, SOA);
  • Sadalītās sistēmas un paralēlā programmēšana;
  • Datu bāzes pamati – plānošana, projektēšana, darbība un traucējummeklēšana;
  • Eksperimentu plānošana — A/B testi, lai pierādītu koncepcijas, noteiktu uzticamību, sistēmas veiktspēju un izstrādātu uzticamus ceļus, lai ātri nodrošinātu labus risinājumus.

Šīs ir tikai dažas no prasībām, lai kļūtu par datu inženieri, tāpēc apgūstiet un izprotiet datu sistēmas, informācijas sistēmas, nepārtrauktu piegādi/izvietošanu/integrāciju, programmēšanas valodas un citas datorzinātņu tēmas (ne visas mācību priekšmetu jomas).

Un visbeidzot, pēdējā, bet ļoti svarīgā lieta, ko es vēlos pateikt.

Ceļš uz datu inženieriju nav tik vienkāršs, kā varētu šķist. Viņš nepiedod, viņš sarūgtina, un jums ir jābūt tam gatavam. Daži mirkļi šajā ceļojumā var mudināt jūs padoties. Bet tas ir īsts darbs un mācību process.

Vienkārši nepārklājiet to jau no paša sākuma. Visa ceļojuma būtība ir iemācīties pēc iespējas vairāk un būt gatavam jauniem izaicinājumiem.
Šeit ir lielisks attēls, ko es atklāju un kas labi ilustrē šo punktu:

Kas ir datu inženieri un kā par tiem kļūt?

Un jā, atcerieties izvairīties no izdegšanas un atpūtas. Tas arī ir ļoti svarīgi. Veiksmi!

Ko jūs domājat par rakstu, draugi? Mēs aicinām jūs uz bezmaksas vebinārs, kas notiks šodien plkst.20.00. Vebināra laikā apspriedīsim, kā ar minimālām izmaksām izveidot efektīvu un mērogojamu datu apstrādes sistēmu mazam uzņēmumam vai startup. Praksē iepazīsimies ar Google Cloud datu apstrādes rīkiem. Uz redzēšanos!

Avots: www.habr.com

Pievieno komentāru