Kiuj estas datumaj inĝenieroj, kaj kiel vi fariĝas tia?

Saluton denove! La titolo de la artikolo parolas por si mem. Antaŭĝoje de la komenco de la kurso Datuma Inĝeniero Ni sugestas, ke vi komprenu, kiuj estas datumaj inĝenieroj. Estas multaj utilaj ligiloj en la artikolo. Feliĉa legado.

Kiuj estas datumaj inĝenieroj, kaj kiel vi fariĝas tia?

Simpla gvidilo pri kiel kapti la datuman inĝenieran ondon kaj ne lasi ĝin treni vin en la abismon.

Ŝajnas, ke ĉiuj volas fariĝi Datum-Sciencisto hodiaŭ. Sed kio pri Datuma Inĝenierado? Esence, ĉi tio estas speco de hibrido de datuma analizisto kaj datuma sciencisto; Datuma inĝeniero kutime respondecas pri administrado de laborfluoj, prilaborado de duktoj kaj ETL-procezoj. Pro la graveco de ĉi tiuj funkcioj, ĉi tio estas nuntempe alia populara profesia ĵargono, kiu aktive akiras impeton.

Altaj salajroj kaj grandega postulo estas nur malgranda parto de tio, kio faras ĉi tiun laboron ege alloga! Se vi volas aliĝi al la vicoj de herooj, neniam estas tro malfrue por komenci lerni. En ĉi tiu afiŝo, mi kolektis ĉiujn necesajn informojn por helpi vin fari viajn unuajn paŝojn.

Do ni komencu!

Kio estas Datuma Inĝenierado?

Sincere, ne ekzistas pli bona klarigo ol ĉi tio:

“Sciencisto povas malkovri novan stelon, sed li ne povas krei tian. Li devos peti inĝenieron fari ĝin por li."

– Gordon Lindsay Glegg

Tiel, la rolo de datuma inĝeniero estas sufiĉe signifa.

Kiel la nomo sugestas, datuma inĝenierado temas pri datumoj, nome ĝia livero, konservado kaj prilaborado. Sekve, la ĉefa tasko de inĝenieroj estas provizi fidindan infrastrukturon por datumoj. Se ni rigardas la AI-hierarkion de bezonoj, datuma inĝenierado okupas la unuajn 2-3 stadiojn: kolekto, movado kaj konservado, datumpreparo.

Kiuj estas datumaj inĝenieroj, kaj kiel vi fariĝas tia?

Kion faras datuma inĝeniero?

Kun la apero de grandaj datumoj, la amplekso de respondeco draste ŝanĝiĝis. Se antaŭe ĉi tiuj fakuloj skribis grandajn SQL-demandojn kaj distilis datumojn uzante ilojn kiel Informatica ETL, Pentaho ETL, Talend, nun la postuloj por datumaj inĝenieroj pliiĝis.

Plej multaj kompanioj kun malfermitaj vakantaĵoj por la pozicio de datuma inĝeniero havas la sekvajn postulojn:

  • Bonega scio pri SQL kaj Python.
  • Sperto kun nubaj platformoj, precipe Amazon Web Services.
  • Preferas kono de Java/Scala.
  • Bona kompreno de datumbazoj SQL kaj NoSQL (modeligado de datumoj, konservado de datumoj).

Memoru, ke ĉi tiuj estas nur la havendaĵoj. El ĉi tiu listo, oni povas supozi, ke datumaj inĝenieroj estas specialistoj en la kampo de programaro kaj backend.
Ekzemple, se kompanio komencas generi grandan kvanton da datumoj de diversaj fontoj, via tasko kiel datuma inĝeniero estas organizi la kolekton de informoj, ĝian prilaboradon kaj stokadon.

La listo de iloj uzataj en ĉi tiu kazo povas diferenci, ĉio dependas de la volumo de ĉi tiu datumo, la rapideco de ĝia ricevo kaj heterogeneco. Plej multaj kompanioj tute ne traktas grandajn datumojn, do kiel centralizita deponejo, tiel nomata datuma stokejo, vi povas uzi SQL-datumbazon (PostgreSQL, MySQL, ktp.) kun malgranda aro da skriptoj, kiuj enigas la datumojn. la magazeno.

IT-gigantoj kiel Google, Amazon, Facebook aŭ Dropbox havas pli altajn postulojn: kono de Python, Java aŭ Scala.

  • Sperto kun grandaj datumoj: Hadoop, Spark, Kafka.
  • Scio pri algoritmoj kaj datumstrukturoj.
  • Kompreni la fundamentojn de distribuitaj sistemoj.
  • Sperto kun datum-bildigaj iloj kiel Tableau aŭ ElasticSearch estos avantaĝo.

Tio estas, estas klara ŝanĝo al grandaj datumoj, nome en ĝia prilaborado sub altaj ŝarĝoj. Ĉi tiuj kompanioj pliigis postulojn por sistema faŭltoleremo.

Datumaj Inĝenieroj Vs. datumsciencistoj

Kiuj estas datumaj inĝenieroj, kaj kiel vi fariĝas tia?
Bone, tio estis simpla kaj amuza komparo (nenio persona), sed fakte ĝi estas multe pli komplika.

Unue, vi devus scii, ke estas multe da ambigueco en la delineado de la roloj kaj kapabloj de datuma sciencisto kaj datuma inĝeniero. Tio estas, vi povas facile esti konfuzita pri kiaj kapabloj necesas por esti sukcesa datuma inĝeniero. Kompreneble, estas certaj kapabloj, kiuj koincidas kun ambaŭ roloj. Sed ekzistas ankaŭ kelkaj diametre kontraŭaj kapabloj.

Datuma scienco estas serioza komerco, sed ni iras al mondo de funkcia datumscienco, kie praktikistoj povas fari sian propran analizon. Por ebligi datumduktojn kaj integrajn datumstrukturojn, vi bezonas datumajn inĝenierojn, ne datumajn sciencistojn.

Ĉu datuma inĝeniero estas pli postulata ol datuma sciencisto?

- Jes, ĉar antaŭ ol vi povas fari karotokukon, vi unue devas kolekti, senŝeligi kaj stoki karotojn!

Datuma inĝeniero komprenas programadon pli bone ol iu ajn datuma sciencisto, sed kiam temas pri statistiko, la malo estas vera.

Sed jen la avantaĝo de datuma inĝeniero:

Sen li/ŝi, la valoro de la prototipa modelo, plej ofte konsistanta el peco de terura kvalita kodo en Python-dosiero, akirita de datumsciencisto kaj iel produktanta rezulton, tendencas al nulo.

Sen datuma inĝeniero, ĉi tiu kodo neniam fariĝos projekto kaj neniu komerca problemo estos efike solvita. La datuma inĝeniero provas transformi ĉion ĉi en produkton.

Bazaj informoj, kiun datuma inĝeniero devus scii

Kiuj estas datumaj inĝenieroj, kaj kiel vi fariĝas tia?

Do, se ĉi tiu laboro eligas la lumon en vi kaj vi estas entuziasma - vi povas lerni ĝin, vi povas regi ĉiujn necesajn kapablojn kaj fariĝi vera rokstelulo en la kampo de datuma inĝenierado. Kaj, jes, vi povas fari ĉi tion eĉ sen programaj kapabloj aŭ aliaj teknikaj scioj. Estas malfacile, sed ebla!

Kio estas la unuaj paŝoj?

Vi devus havi ĝeneralan ideon pri kio estas kio.

Antaŭ ĉio, Datuma Inĝenierado rilatas al komputiko. Pli specife, vi devas kompreni efikajn algoritmojn kaj datumstrukturojn. Due, ĉar datumaj inĝenieroj laboras kun datumoj, necesas kompreni la principojn de datumbazoj kaj la strukturoj kiuj submetas ilin.

Ekzemple, konvenciaj B-arbo SQL-datumbazoj estas bazitaj sur la B-Tree-datumstrukturo, same kiel, en modernaj distribuitaj deponejoj, LSM-Tree kaj aliaj modifoj de hashtabloj.

*Ĉi tiuj paŝoj baziĝas sur bonega artikolo Adilya Ĥaŝtamova. Do, se vi konas la rusan, subtenu ĉi tiun aŭtoron kaj legu lia posteno.

1. Algoritmoj kaj datumstrukturoj

Uzi la ĝustan datumstrukturon povas signife plibonigi la agadon de algoritmo. Ideale, ni ĉiuj lernu pri datumstrukturoj kaj algoritmoj en niaj lernejoj, sed ĉi tio malofte estas kovrita. Ĉiukaze, neniam estas tro malfrue por konatiĝi.
Do jen miaj plej ŝatataj senpagaj kursoj por lerni datumstrukturojn kaj algoritmojn:

Krome ne forgesu pri la klasika laboro de Thomas Corman pri algoritmoj - Enkonduko al Algoritmoj. Ĉi tio estas la perfekta referenco kiam vi bezonas refreŝigi vian memoron.

  • Por plibonigi viajn kapablojn, uzu Leetcode.

Vi ankaŭ povas plonĝi en la mondon de datumbazoj kun mirindaj videoj de Carnegie Mellon University sur Youtube:

2. Lernu SQL

Nia tuta vivo estas datumoj. Kaj por ĉerpi ĉi tiujn datumojn el la datumbazo, vi devas "paroli" la saman lingvon per ĝi.

SQL (Structured Query Language) estas la lingvo de komunikado en la datuma domajno. Sendepende de tio, kion iu ajn diras, SQL vivis, vivas kaj vivos tre longe.

Se vi estas en disvolviĝo dum longa tempo, vi verŝajne rimarkis, ke onidiroj pri la baldaŭa morto de SQL aperas periode. La lingvo estis evoluigita en la fruaj 70-aj jaroj kaj daŭre estas tre populara inter analizistoj, programistoj kaj simple entuziasmuloj.
Sen scio pri SQL estas nenio farenda en datuma inĝenierado, ĉar vi neeviteble devos krei demandojn por retrovi datumojn. Ĉiuj modernaj granddatumaj stokejoj subtenas SQL:

  • Amazon RedShift
  • HP Vertikalo
  • plejsanktejo
  • SQLa Servilo

... kaj multaj aliaj.

Por analizi grandan tavolon de datumoj stokitaj en distribuitaj sistemoj kiel HDFS, oni inventis SQL-motorojn: Apache Hive, Impala, ktp. Vidu, ĝi ne iras ien.

Kiel lerni SQL? Nur faru ĝin praktike.

Por fari tion, mi rekomendus kontroli bonegan lernilon, kiu, cetere, estas senpaga Reĝimo Analytics.

  1. Meza SQL
  2. Kunigi Datumojn en SQL

Kio igas ĉi tiujn kursojn specialaj estas ke ili havas interagan medion kie vi povas skribi kaj ruli SQL-demandojn ĝuste en via retumilo. Rimedo Moderna SQL ne estos superflua. Kaj vi povas apliki ĉi tiun scion al Leetcode taskoj en la sekcio Datumbazoj.

3. Programado en Python kaj Java/Scala

Kial vi devus lerni la programlingvon Python, mi jam skribis en la artikolo Python vs R. Elektante la Plej Bonan Ilon por AI, ML kaj Datuma Scienco. Kiam temas pri Java kaj Scala, la plej multaj el la iloj por stoki kaj prilabori grandegajn kvantojn da datumoj estas skribitaj en ĉi tiuj lingvoj. Ekzemple:

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

Por kompreni kiel funkcias ĉi tiuj iloj, vi devas scii la lingvojn en kiuj ili estas skribitaj. La funkcia aliro de Scala permesas al vi efike solvi paralelajn datumtraktadproblemojn. Python, bedaŭrinde, ne povas fanfaroni pri rapideco kaj paralela prilaborado. Ĝenerale, kono de pluraj lingvoj kaj programaj paradigmoj estas bona por la amplekso de aliroj por solvi problemojn.

Por plonĝi en la Scala lingvon, vi povas legi Programado en Scala de la aŭtoro de la lingvo. Twitter ankaŭ publikigis bonan enkondukan gvidilon - Scala Lernejo.

Koncerne Python, mi kredas Flua Python plej bona meznivela libro.

4. Iloj por labori kun grandaj datumoj

Jen listo de la plej popularaj iloj en la mondo de grandaj datumoj:

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

Vi povas trovi pli da informoj pri konstruado de grandaj datumblokoj en ĉi tiu mirinda interaga medio. La plej popularaj iloj estas Spark kaj Kafka. Ili certe estas studindaj, estas konsilinde kompreni kiel ili funkcias de interne. Jay Kreps (kunaŭtoro de Kafka) publikigis monumentan verkon en 2013 La Protokolo: Kion Ĉiu Programisto Devus Scii Pri Realtempa Datuma Agrega AbstraktadoCetere, la ĉefaj ideoj de ĉi tiu Talmudo estis uzataj por krei Apache Kafka.

5. Nubaj platformoj

Kiuj estas datumaj inĝenieroj, kaj kiel vi fariĝas tia?

Scio pri almenaŭ unu nuba platformo estas en la listo de bazaj postuloj por kandidatoj por la pozicio de datuma inĝeniero. Dungantoj preferas Amazon Web Services, kun la nuba platformo de Google en dua loko kaj Microsoft Azure rondiganta la suprajn tri.

Vi devas havi bonan scion pri Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Distribuitaj sistemoj

Labori kun grandaj datumoj implicas la ĉeeston de aretoj de sendepende funkcianta komputiloj, komunikado inter kiuj estas efektivigita tra reto. Ju pli granda la areto, des pli granda la probablo de fiasko de ĝiaj membronodoj. Por fariĝi bonega datuma sciencisto, vi devas kompreni la problemojn kaj ekzistantajn solvojn por distribuitaj sistemoj. Ĉi tiu areo estas malnova kaj kompleksa.

Andrew Tanenbaum estas konsiderita pioniro en tiu kampo. Por tiuj, kiuj ne timas teorion, mi rekomendas lian libron "Distribuitaj Sistemoj", ĝi povas ŝajni timiga por komencantoj, sed ĝi vere helpos vin perfektigi viajn kapablojn.

mi pensas Dezajnante Daten-intensajn Aplikojn de Martin Kleppmann plej bona enkonduka libro. Cetere, Martin havas mirindan блог. Lia laboro helpos sistemigi scion pri konstruado de moderna infrastrukturo por stokado kaj prilaborado de grandaj datumoj.
Por tiuj, kiuj ŝatas spekti videojn, ekzistas kurso ĉe Youtube Distribuitaj komputilaj sistemoj.

7. Datumoj duktoj

Kiuj estas datumaj inĝenieroj, kaj kiel vi fariĝas tia?

Datumaj duktoj estas io sen kio vi ne povas vivi kiel datuma inĝeniero.

Plej ofte, datuma inĝeniero konstruas tiel nomatan datuman dukton, tio estas, li kreas procezon por liveri datumojn de unu loko al alia. Ĉi tiuj povus esti kutimaj skriptoj, kiuj iras al la API de ekstera servo aŭ faras SQL-demandon, pliigas la datumojn kaj metas ĝin en centralizitan vendejon (datumvendejo) aŭ nestrukturitan datumvendejon (datumlagoj).

Por resumi: la baza kontrola listo por datuma inĝeniero

Kiuj estas datumaj inĝenieroj, kaj kiel vi fariĝas tia?

Por resumi, necesas bona kompreno pri la jenaj:

  • Informoj Sistemoj;
  • Programaro-disvolviĝo (Agile, DevOps, Design Techniques, SOA);
  • Distribuitaj sistemoj kaj paralela programado;
  • Bazaj Bazaj Bazoj - Planado, Dezajno, Funkciado kaj Troubleshooting;
  • Dezajno de eksperimentoj - A/B-testoj por pruvi konceptojn, determini fidindecon, sisteman rendimenton kaj evoluigi fidindajn vojojn por liveri bonajn solvojn rapide.

Ĉi tiuj estas nur kelkaj el la postuloj por fariĝi datuma inĝeniero, do lernu kaj komprenu datumsistemojn, informsistemojn, kontinuan liveron/deplojadon/integriĝon, programlingvojn kaj aliajn komputilajn temojn (ne ĉiuj fakoj).

Kaj fine, la lastan sed tre gravan aferon mi volas diri.

La vojo al iĝi Datuma Inĝenierado ne estas tiel simpla kiel ĝi povus ŝajni. Li ne pardonas, li frustras, kaj vi devas esti preta por ĉi tio. Iuj momentoj en ĉi tiu vojaĝo povas puŝi vin rezigni. Sed ĉi tio estas vera laboro kaj lernado.

Nur ne sukeru ĝin de la komenco. La tuta celo de vojaĝado estas lerni kiel eble plej multe kaj esti preta por novaj defioj.
Jen bonega bildo, kiun mi renkontis, kiu bone ilustras ĉi tiun punkton:

Kiuj estas datumaj inĝenieroj, kaj kiel vi fariĝas tia?

Kaj jes, memoru eviti elĉerpiĝon kaj ripozon. Ĉi tio ankaŭ estas tre grava. Bonŝancon!

Kion vi opinias pri la artikolo, amikoj? Ni invitas vin al senpaga retseminario, kiu okazos hodiaŭ je la 20.00. Dum la retseminario, ni diskutos kiel konstrui efikan kaj skaleblan datuman prilaboran sistemon por malgranda kompanio aŭ starto je minimuma kosto. Kiel praktiko, ni konatiĝos kun iloj pri datumtraktado de Google Cloud. Ĝis revido!

fonto: www.habr.com

Aldoni komenton