CienÄ«jamie lasÄ«tÄji, laba diena!
IT platformu izveide datu vÄkÅ”anai un analÄ«zei agri vai vÄlu rodas jebkuram uzÅÄmumam, kura bizness ir balstÄ«ts uz intelektuÄli noslogotu pakalpojumu sniegÅ”anas modeli vai tehniski sarežģītu produktu izveidi. AnalÄ«tisku platformu izveide ir sarežģīts un laikietilpÄ«gs uzdevums. TomÄr jebkuru uzdevumu var vienkÄrÅ”ot. Å ajÄ rakstÄ es vÄlos dalÄ«ties pieredzÄ par zema koda rÄ«ku izmantoÅ”anu, lai palÄ«dzÄtu radÄ«t analÄ«tiskos risinÄjumus. Å Ä« pieredze iegÅ«ta, realizÄjot vairÄkus projektus uzÅÄmuma Neoflex Big Data Solutions virzienÄ. KopÅ” 2005. gada Neoflex Big Data Solutions virziens nodarbojas ar datu noliktavu un ezeru bÅ«vniecÄ«bas jautÄjumiem, risina informÄcijas apstrÄdes Ätruma optimizÄÅ”anas problÄmas un strÄdÄ pie datu kvalitÄtes vadÄ«bas metodikas.
Neviens nevarÄs izvairÄ«ties no vÄji un/vai spÄcÄ«gi strukturÄtu datu apzinÄtas uzkrÄÅ”anas. VarbÅ«t pat tad, ja mÄs runÄjam par mazajiem uzÅÄmumiem. Galu galÄ, mÄrogojot biznesu, perspektÄ«vs uzÅÄmÄjs saskarsies ar lojalitÄtes programmas izstrÄdes jautÄjumiem, vÄlÄsies analizÄt tirdzniecÄ«bas vietu efektivitÄti, domÄs par mÄrÄ·tiecÄ«gu reklÄmu un bÅ«s neizpratnÄ par pieprasÄ«jumu pÄc pavadoÅ”ajiem produktiem. . SÄkotnÄji problÄmu var atrisinÄt āuz ceļaā. TaÄu, biznesam augot, analÄ«tiskÄs platformas izmantoÅ”ana joprojÄm ir neizbÄgama.
TomÄr kÄdos gadÄ«jumos datu analÄ«zes uzdevumi var izvÄrsties par "RaÄ·eÅ”u zinÄtnes" klases problÄmÄm? VarbÅ«t tajÄ brÄ«dÄ«, kad mÄs runÄjam par patieÅ”Äm lieliem datiem.
Lai atvieglotu raÄ·eÅ”u zinÄtni, varat Äst ziloni pa gabalu.
Jo diskrÄtÄkas un autonomÄkas ir jÅ«su lietojumprogrammas/pakalpojumi/mikropakalpojumi, jo vieglÄk jums, jÅ«su kolÄÄ£iem un visam uzÅÄmumam bÅ«s sagremot ziloni.
GandrÄ«z visi mÅ«su klienti nonÄca pie Ŕī postulÄta, pÄrbÅ«vÄjot ainavu, pamatojoties uz DevOps komandu inženiertehnisko praksi.
Bet pat ar āatseviŔķu ziloÅuā diÄtu mums ir labas IT ainavas āpÄrsÄtinÄjumaā iespÄjas. Å ajÄ brÄ«dÄ« ir vÄrts apstÄties, izelpot un paskatÄ«ties uz sÄniem zema koda inženierijas platforma.
Daudzus izstrÄdÄtÄjus biedÄ iespÄja nonÄkt strupceÄ¼Ä savÄ karjerÄ, pÄrejot no tieÅ”as koda rakstÄ«Å”anas uz bultiÅu vilkÅ”anu zema koda sistÄmu interfeisos. Bet darbgaldu parÄdÄ«Å”anÄs neizraisÄ«ja inženieru pazuÅ”anu, bet gan pacÄla viÅu darbu jaunÄ lÄ«menÄ«!
Noskaidrosim, kÄpÄc.
Datu analÄ«ze loÄ£istikas, telekomunikÄciju nozares, mediju pÄtniecÄ«bas, finanÅ”u sektora jomÄ vienmÄr ir saistÄ«ta ar Å”Ädiem jautÄjumiem:
- automatizÄtas analÄ«zes Ätrums;
- SpÄja veikt eksperimentus, neietekmÄjot galveno datu ražoÅ”anas plÅ«smu;
- Sagatavoto datu ticamība;
- Mainīt izsekoŔanu un versiju veidoŔanu;
- Datu izcelsme, Datu līnija, CDC;
- Ätra jaunu funkciju piegÄde ražoÅ”anas vidÄ;
- Un bÄdÄ«gi slavenais: izstrÄdes un atbalsta izmaksas.
Tas ir, inženieriem ir milzÄ«gs skaits augsta lÄ«meÅa uzdevumu, kurus var veikt pietiekami efektÄ«vi, tikai attÄ«rot viÅu apziÅu no zema lÄ«meÅa attÄ«stÄ«bas uzdevumiem.
IzstrÄdÄtÄju priekÅ”nosacÄ«jumi, lai pÄrietu uz jaunu lÄ«meni, bija biznesa attÄ«stÄ«ba un digitalizÄcija. MainÄs arÄ« izstrÄdÄtÄja vÄrtÄ«ba: ievÄrojami trÅ«kst izstrÄdÄtÄju, kas varÄtu iedziļinÄties automatizÄtÄ biznesa koncepcijÄs.
ZÄ«mÄsim analoÄ£iju ar zema lÄ«meÅa un augsta lÄ«meÅa programmÄÅ”anas valodÄm. PÄreja no zema lÄ«meÅa valodÄm uz augsta lÄ«meÅa valodÄm ir pÄreja no ātieÅ”o direktÄ«vu rakstÄ«Å”anas aparatÅ«ras valodÄā uz ādirektÄ«vÄm cilvÄku valodÄā. Tas ir, pievienojot kÄdu abstrakcijas slÄni. Å ajÄ gadÄ«jumÄ pÄreja uz zema koda platformÄm no augsta lÄ«meÅa programmÄÅ”anas valodÄm ir pÄreja no ādirektÄ«vÄm cilvÄku valodÄā uz ādirektÄ«vÄm biznesa valodÄā. Ja ir izstrÄdÄtÄji, kurus Å”is fakts apbÄdina, tad viÅus, iespÄjams, skumdina jau kopÅ” brīža, kad ir dzimis Java Script, kas izmanto masÄ«vu ŔķiroÅ”anas funkcijas. Un Ŕīm funkcijÄm, protams, ir programmatÅ«ras ievieÅ”ana zem pÄrsega, izmantojot citus tÄ paÅ”a augsta lÄ«meÅa programmÄÅ”anas lÄ«dzekļus.
TÄpÄc zemais kods ir tikai cita abstrakcijas lÄ«meÅa parÄdÄ«Å”anÄs.
LietiÅ”Ä·Ä pieredze, izmantojot zemu kodu
Zema koda tÄma ir diezgan plaÅ”a, bet tagad es vÄlÄtos runÄt par āzema koda jÄdzienuā praktisko pielietojumu, izmantojot kÄda mÅ«su projekta piemÄru.
Neoflex Big Data Solutions nodaļa vairÄk specializÄjas biznesa finanÅ”u sektorÄ, datu noliktavu un ezeru veidoÅ”anÄ un dažÄdu atskaiÅ”u automatizÄcijÄ. Å ajÄ niÅ”Ä zemÄ koda izmantoÅ”ana jau sen ir kļuvusi par standartu. Starp citiem zema koda rÄ«kiem var minÄt rÄ«kus ETL procesu organizÄÅ”anai: Informatica Power Center, IBM Datastage, Pentaho Data Integration. Vai Oracle Apex, kas darbojas kÄ vide Ätrai saskarÅu attÄ«stÄ«bai datu piekļuvei un rediÄ£ÄÅ”anai. TomÄr zema koda izstrÄdes rÄ«ku izmantoÅ”ana ne vienmÄr ir saistÄ«ta ar ļoti mÄrÄ·tiecÄ«gu lietojumprogrammu izveidi komerciÄlÄ tehnoloÄ£iju kaudzÄ ar nepÄrprotamu atkarÄ«bu no pÄrdevÄja.
Izmantojot zema koda platformas, jÅ«s varat arÄ« organizÄt datu plÅ«smu orÄ·estrÄÅ”anu, izveidot datu zinÄtnes platformas vai, piemÄram, moduļus datu kvalitÄtes pÄrbaudei.
Viens no pielietotajiem pieredzes piemÄriem zema koda izstrÄdes rÄ«ku izmantoÅ”anÄ ir sadarbÄ«ba starp Neoflex un Mediascope, kas ir viens no Krievijas mediju pÄtÄ«jumu tirgus lÄ«deriem. Viens no Ŕī uzÅÄmuma darbÄ«bas mÄrÄ·iem ir tÄdu datu iegÅ«Å”ana, uz kuru pamata reklÄmdevÄji, interneta platformas, TV kanÄli, radiostacijas, reklÄmas aÄ£entÅ«ras un zÄ«moli pieÅem lÄmumus par reklÄmas iegÄdi un plÄno savas mÄrketinga komunikÄcijas.
Mediju pÄtniecÄ«ba ir tehnoloÄ£iski noslogota uzÅÄmÄjdarbÄ«bas joma. Video secÄ«bu atpazÄ«Å”ana, datu vÄkÅ”ana no ierÄ«cÄm, kas analizÄ skatÄ«Å”anos, darbÄ«bu mÄrÄ«Å”ana tÄ«mekļa resursos ā tas viss nozÄ«mÄ, ka uzÅÄmumam ir liels IT personÄls un milzÄ«ga pieredze analÄ«tisko risinÄjumu izveidÄ. TaÄu informÄcijas apjoma, tÄs avotu skaita un daudzveidÄ«bas eksponenciÄlais pieaugums liek IT datu nozarei pastÄvÄ«gi progresÄt. VienkÄrÅ”Äkais risinÄjums jau funkcionÄjoÅ”Äs Mediascope analÄ«tiskÄs platformas mÄrogoÅ”anai varÄtu bÅ«t IT personÄla palielinÄÅ”ana. TaÄu daudz efektÄ«vÄks risinÄjums ir paÄtrinÄt izstrÄdes procesu. Viens no soļiem Å”ajÄ virzienÄ var bÅ«t zema koda platformu izmantoÅ”ana.
LaikÄ, kad projekts sÄkÄs, uzÅÄmumam jau bija funkcionÄjoÅ”s produkta risinÄjums. TomÄr risinÄjuma ievieÅ”ana MSSQL nevarÄja pilnÄ«bÄ apmierinÄt cerÄ«bas uz mÄrogoÅ”anas funkcionalitÄti, vienlaikus saglabÄjot pieÅemamas izstrÄdes izmaksas.
MÅ«su priekÅ”Ä esoÅ”ais uzdevums bija patiesi ambiciozs ā Neoflex un Mediascope bija jÄizveido industriÄls risinÄjums mazÄk nekÄ gada laikÄ, Åemot vÄrÄ MVP izlaiÅ”anu sÄkuma datuma pirmajÄ ceturksnÄ«.
Hadoop tehnoloÄ£iju kaudze tika izvÄlÄta kÄ pamats jaunas datu platformas izveidei, kuras pamatÄ ir zema koda skaitļoÅ”ana. HDFS ir kļuvis par standartu datu glabÄÅ”anai, izmantojot parketa failus. Lai piekļūtu platformÄ esoÅ”ajiem datiem, tika izmantots Hive, kurÄ visas pieejamÄs vitrÄ«nas ir parÄdÄ«tas ÄrÄjo tabulu veidÄ. Datu ielÄde krÄtuvÄ tika Ä«stenota, izmantojot Kafka un Apache NiFi.
Lowe-koda rÄ«ks Å”ajÄ koncepcijÄ tika izmantots, lai optimizÄtu darbietilpÄ«gÄko uzdevumu analÄ«tiskÄs platformas izveidÄ - datu aprÄÄ·inÄÅ”anas uzdevumu.
Zema koda Datagram rÄ«ks tika izvÄlÄts kÄ galvenais datu kartÄÅ”anas mehÄnisms. Neoflex Datagram ir rÄ«ks transformÄciju un datu plÅ«smu izstrÄdei.
Izmantojot Å”o rÄ«ku, jÅ«s varat iztikt, nerakstot Scala kodu manuÄli. Scala kods tiek Ä£enerÄts automÄtiski, izmantojot modeļu vadÄ«tas arhitektÅ«ras pieeju.
AcÄ«mredzama Ŕīs pieejas priekÅ”rocÄ«ba ir izstrÄdes procesa paÄtrinÄÅ”ana. TomÄr papildus Ätrumam ir arÄ« Å”Ädas priekÅ”rocÄ«bas:
- Avotu/uztvÄrÄju satura un struktÅ«ras apskate;
- Datu plūsmas objektu izcelsmes izsekoŔana atseviŔķiem laukiem (līnija);
- PÄrveidojumu daļÄja izpilde ar starprezultÄtu apskati;
- Avota koda pÄrskatÄ«Å”ana un pielÄgoÅ”ana pirms izpildes;
- AutomÄtiska transformÄciju validÄcija;
- AutomÄtiska datu lejupielÄde 1 in 1.
Å Ä·Ärslis ienÄkÅ”anai zema koda risinÄjumos transformÄciju Ä£enerÄÅ”anai ir diezgan zems: izstrÄdÄtÄjam ir jÄzina SQL un jÄbÅ«t pieredzei darbÄ ar ETL rÄ«kiem. Ir vÄrts pieminÄt, ka koda vadÄ«ti transformÄciju Ä£eneratori nav ETL rÄ«ki Ŕī vÄrda plaÅ”Ä nozÄ«mÄ. Zema koda rÄ«kiem var nebÅ«t savas koda izpildes vides. Tas nozÄ«mÄ, ka Ä£enerÄtais kods tiks izpildÄ«ts vidÄ, kas pastÄvÄja klasterÄ« pat pirms zema koda risinÄjuma instalÄÅ”anas. Un tas, iespÄjams, ir vÄl viens pluss zema lÄ«meÅa karmai. TÄ kÄ paralÄli zema koda komandai var strÄdÄt āklasiskÄā komanda, kas ievieÅ” funkcionalitÄti, piemÄram, tÄ«rÄ Scala kodÄ. Abu komandu uzlabojumu ievieÅ”ana ražoÅ”anÄ bÅ«s vienkÄrÅ”a un nemanÄma.
IespÄjams, ir vÄrts atzÄ«mÄt, ka papildus zema koda kodiem ir arÄ« bezkoda risinÄjumi. Un bÅ«tÄ«bÄ tÄs ir dažÄdas lietas. Zems kods ļauj izstrÄdÄtÄjam vairÄk iejaukties Ä£enerÄtajÄ kodÄ. Datagram gadÄ«jumÄ ir iespÄjams apskatÄ«t un rediÄ£Ät Ä£enerÄto Scala kodu, bezkoda Å”Ädu iespÄju var nenodroÅ”inÄt. Å Ä« atŔķirÄ«ba ir ļoti bÅ«tiska ne tikai risinÄjuma elastÄ«bas ziÅÄ, bet arÄ« komforta un motivÄcijas ziÅÄ datu inženieru darbÄ.
RisinÄjuma arhitektÅ«ra
MÄÄ£inÄsim precÄ«zi noskaidrot, kÄ zema koda rÄ«ks palÄ«dz atrisinÄt datu aprÄÄ·ina funkcionalitÄtes izstrÄdes Ätruma optimizÄÅ”anas problÄmu. Vispirms apskatÄ«sim sistÄmas funkcionÄlo arhitektÅ«ru. PiemÄrs Å”ajÄ gadÄ«jumÄ ir datu veidoÅ”anas modelis mediju izpÄtei.
MÅ«su gadÄ«jumÄ datu avoti ir ļoti neviendabÄ«gi un dažÄdi:
- CilvÄku mÄrÄ«tÄji (TV skaitÄ«tÄji) ir programmatÅ«ras un aparatÅ«ras ierÄ«ces, kas nolasa lietotÄju uzvedÄ«bu no televÄ«zijas paneļa respondentiem ā kas, kad un kÄdu TV kanÄlu skatÄ«jÄs mÄjsaimniecÄ«bÄ, kas piedalÄs pÄtÄ«jumÄ. SniegtÄ informÄcija ir apraides skatÄ«Å”anÄs intervÄlu straume, kas saistÄ«ta ar multivides pakotni un multivides produktu. Datus ielÄdes datu ezerÄ stadijÄ var papildinÄt ar demogrÄfiskajiem atribÅ«tiem, Ä£eostratifikÄciju, laika joslu un citu informÄciju, kas nepiecieÅ”ama konkrÄta medija produkta televÄ«zijas skatÄ«Å”anÄs analÄ«zei. Veiktos mÄrÄ«jumus var izmantot, lai analizÄtu vai plÄnotu reklÄmas kampaÅas, novÄrtÄtu auditorijas aktivitÄti un vÄlmes, kÄ arÄ« apkopotu apraides tÄ«klu;
- Datus var iegÅ«t no uzraudzÄ«bas sistÄmÄm televÄ«zijas raidÄ«jumu straumÄÅ”anai un video resursa satura skatÄ«Å”anÄs mÄrÄ«Å”anai internetÄ;
- MÄrÄ«Å”anas rÄ«ki tÄ«mekļa vidÄ, tostarp gan uz vietni, gan uz lietotÄju orientÄti skaitÄ«tÄji. Datu ezera datu nodroÅ”inÄtÄjs var bÅ«t izpÄtes joslas pÄrlÅ«kprogrammas papildinÄjums un mobilÄ lietojumprogramma ar iebÅ«vÄtu VPN.
- Dati var bÅ«t arÄ« no vietnÄm, kas apkopo tieÅ”saistes anketu aizpildÄ«Å”anas rezultÄtus un telefoninterviju rezultÄtus uzÅÄmumu aptaujÄs;
- Papildu datu ezera bagÄtinÄÅ”ana var notikt, lejupielÄdÄjot informÄciju no partneruzÅÄmumu žurnÄliem.
As is ielÄdes ievieÅ”anu no avota sistÄmÄm primÄrajÄ neapstrÄdÄto datu inscenÄÅ”anÄ var organizÄt dažÄdos veidos. Ja Å”iem nolÅ«kiem tiek izmantots zems kods, ir iespÄjama automÄtiska ielÄdes skriptu Ä£enerÄÅ”ana, pamatojoties uz metadatiem. Å ajÄ gadÄ«jumÄ nav nepiecieÅ”ams pazeminÄt lÄ«dz avota izstrÄdes lÄ«menim, lai atlasÄ«tu kartÄjumus. Lai ieviestu automÄtisko ielÄdi, mums ir jÄizveido savienojums ar avotu un pÄc tam ielÄdes interfeisÄ jÄdefinÄ ielÄdÄjamo entÄ«tiju saraksts. Direktoriju struktÅ«ra HDFS tiks izveidota automÄtiski un atbildÄ«s datu uzglabÄÅ”anas struktÅ«rai avota sistÄmÄ.
TomÄr Ŕī projekta kontekstÄ mÄs nolÄmÄm neizmantot Å”o zema koda platformas funkciju, jo Mediascope uzÅÄmums jau ir patstÄvÄ«gi sÄcis darbu pie lÄ«dzÄ«ga pakalpojuma izveides, izmantojot kombinÄciju Nifi + Kafka.
Ir vÄrts nekavÄjoties norÄdÄ«t, ka Å”ie rÄ«ki nav savstarpÄji aizvietojami, bet gan papildina viens otru. Nifi un Kafka spÄj strÄdÄt gan tieÅ”Ä (Nifi -> Kafka), gan reversÄ (Kafka -> Nifi) savienojumÄ. PlaÅ”saziÅas lÄ«dzekļu izpÄtes platformai tika izmantota paketes pirmÄ versija.
MÅ«su gadÄ«jumÄ NayFi vajadzÄja apstrÄdÄt dažÄda veida datus no avota sistÄmÄm un nosÅ«tÄ«t tos Kafka brokerim. Å ajÄ gadÄ«jumÄ ziÅojumi tika nosÅ«tÄ«ti uz konkrÄtu Kafka tÄmu, izmantojot PublishKafka Nifi procesorus. Å o cauruļvadu orÄ·estrÄÅ”ana un apkope tiek veikta vizuÄlÄ saskarnÄ. Nifi rÄ«ku un Nifi + Kafka kombinÄcijas izmantoÅ”anu var saukt arÄ« par zema koda pieeju izstrÄdei, kurai ir zems ŔķÄrslis ienÄkÅ”anai Big Data tehnoloÄ£ijÄs un paÄtrina aplikÄciju izstrÄdes procesu.
NÄkamais projekta Ä«stenoÅ”anas posms bija detalizÄtu datu apkopoÅ”ana viena semantiskÄ slÄÅa formÄtÄ. Ja entÄ«tijai ir vÄsturiski atribÅ«ti, aprÄÄ·ins tiek veikts attiecÄ«gÄ nodalÄ«juma kontekstÄ. Ja entÄ«tija nav vÄsturiska, tad pÄc izvÄles ir iespÄjams vai nu pÄrrÄÄ·inÄt visu objekta saturu, vai arÄ« pilnÄ«bÄ atteikties no Ŕī objekta pÄrrÄÄ·inÄÅ”anas (izmaiÅu trÅ«kuma dÄļ). Å ajÄ posmÄ visÄm entÄ«tijÄm tiek Ä£enerÄtas atslÄgas. AtslÄgas tiek glabÄtas Hbase direktorijos, kas atbilst galvenajiem objektiem, kas satur atbilstÄ«bu starp atslÄgÄm analÄ«tiskajÄ platformÄ un atslÄgÄm no avota sistÄmÄm. Atomu vienÄ«bu konsolidÄcija tiek papildinÄta ar analÄ«tisko datu provizorisko aprÄÄ·inu rezultÄtiem. Datu aprÄÄ·inÄÅ”anas sistÄma bija Spark. AprakstÄ«tÄ funkcionalitÄte datu nogÄdÄÅ”anai vienÄ semantikÄ tika ieviesta arÄ«, pamatojoties uz kartÄjumiem no zema koda Datagram rÄ«ka.
MÄrÄ·a arhitektÅ«rai biznesa lietotÄjiem bija nepiecieÅ”ama SQL piekļuve datiem. Å ai opcijai tika izmantots strops. Objekti tiek reÄ£istrÄti Hive automÄtiski, kad zema koda rÄ«kÄ iespÄjojat opciju āReÄ£istrÄt Hive Tableā.
AprÄÄ·inu plÅ«smas kontrole
Datagram ir saskarne darbplÅ«smas plÅ«smas dizainu izveidei. KartÄÅ”anu var palaist, izmantojot Oozie plÄnotÄju. Straumes izstrÄdÄtÄja saskarnÄ ir iespÄjams izveidot shÄmas paralÄlÄm, secÄ«gÄm vai no izpildes atkarÄ«gÄm datu transformÄcijÄm. Ir atbalsts Äaulas skriptiem un java programmÄm. Ir iespÄjams izmantot arÄ« Apache Livy serveri. Apache Livy tiek izmantots, lai palaistu lietojumprogrammas tieÅ”i no izstrÄdes vides.
Ja uzÅÄmumam jau ir savs procesa organizÄtÄjs, ir iespÄjams izmantot REST API, lai iegultu kartÄjumus esoÅ”Ä plÅ«smÄ. PiemÄram, mums bija diezgan veiksmÄ«ga pieredze kartÄjumu iegulÅ”anÄ Scala PLSQL un Kotlin rakstÄ«tos orÄ·estratoros. Zema koda rÄ«ka REST API ietver tÄdas darbÄ«bas kÄ izpildÄmÄ gada Ä£enerÄÅ”ana, pamatojoties uz kartÄÅ”anas dizainu, kartÄÅ”anas izsaukÅ”ana, kartÄjumu secÄ«bas izsaukÅ”ana un, protams, parametru nodoÅ”ana vietrÄdim URL, lai palaistu kartÄÅ”anu.
KopÄ ar Oozie ir iespÄjams organizÄt aprÄÄ·inu plÅ«smu, izmantojot Airflow. VarbÅ«t es ilgi nekavÄÅ”os pie Oozie un Airflow salÄ«dzinÄjuma, bet vienkÄrÅ”i teikÅ”u, ka saistÄ«bÄ ar darbu pie mediju izpÄtes projekta izvÄle krita par labu Airflow. Galvenie argumenti Å”oreiz bija aktÄ«vÄka kopiena, kas izstrÄdÄ produktu, un attÄ«stÄ«tÄks interfeiss + API.
Gaisa plÅ«sma ir laba arÄ« tÄpÄc, ka tÄ izmanto iemīļoto Python, lai aprakstÄ«tu aprÄÄ·inu procesus. Un kopumÄ atvÄrtÄ koda darbplÅ«smas pÄrvaldÄ«bas platformu nav tik daudz. Procesu palaiÅ”ana un izpildes uzraudzÄ«ba (tostarp Ganta diagramma) tikai pievieno punktus Airflow karmai.
KonfigurÄcijas faila formÄts zema koda risinÄjumu kartÄÅ”anas palaiÅ”anai ir kļuvis par iesniegÅ”anu. Tas notika divu iemeslu dÄļ. PirmkÄrt, spark-submit ļauj tieÅ”i palaist jar failu no konsoles. OtrkÄrt, tajÄ var bÅ«t visa nepiecieÅ”amÄ informÄcija, lai konfigurÄtu darbplÅ«smu (kas atvieglo Dag Ä£enerÄjoÅ”u skriptu rakstÄ«Å”anu).
VisizplatÄ«tÄkais Airflow darbplÅ«smas elements mÅ«su gadÄ«jumÄ bija SparkSubmitOperator.
SparkSubmitOperator ļauj palaist burkas ā iesaiÅotus Datagram kartÄjumus ar tiem iepriekÅ” Ä£enerÄtiem ievades parametriem.
Ir vÄrts pieminÄt, ka katrs Airflow uzdevums darbojas atseviÅ”Ä·Ä pavedienÄ un neko nezina par citiem uzdevumiem. TÄpÄc mijiedarbÄ«ba starp uzdevumiem tiek veikta, izmantojot vadÄ«bas operatorus, piemÄram, DummyOperator vai BranchPythonOperator.
KopumÄ Datagram zema koda risinÄjuma izmantoÅ”ana kopÄ ar konfigurÄcijas failu universalizÄciju (veidojot Dag) ievÄrojami paÄtrinÄja un vienkÄrÅ”oja datu ielÄdes plÅ«smu izstrÄdes procesu.
VitrÄ«nas aprÄÄ·ins
IespÄjams, ka intelektuÄli visvairÄk noslogotais analÄ«tisko datu iegÅ«Å”anas posms ir vitrÄ«nu celÅ”anas posms. KontekstÄ ar vienu no izpÄtes uzÅÄmuma datu aprÄÄ·inu plÅ«smÄm, Å”ajÄ posmÄ dati tiek reducÄti uz atsauces apraidi, Åemot vÄrÄ laika joslu korekcijas un piesaistÄ«ti apraides tÄ«klam. Ir iespÄjams arÄ« pielÄgoties lokÄlajam apraides tÄ«klam (vietÄjÄs ziÅas un reklÄma). Cita starpÄ Å”Ä« darbÄ«ba sadala multivides produktu nepÄrtrauktas skatÄ«Å”anÄs intervÄlus, pamatojoties uz skatÄ«Å”anÄs intervÄlu analÄ«zi. SkatÄ«Å”anÄs vÄrtÄ«bas nekavÄjoties tiek āsvÄrtasā, pamatojoties uz informÄciju par to nozÄ«mÄ«gumu (korekcijas koeficienta aprÄÄ·ins).
AtseviŔķs solis vitrÄ«nu sagatavoÅ”anÄ ir datu validÄcija. ValidÄcijas algoritms ietver vairÄku matemÄtikas zinÄtnes modeļu izmantoÅ”anu. TomÄr zema koda platformas izmantoÅ”ana ļauj sadalÄ«t sarežģītu algoritmu vairÄkos atseviŔķos vizuÄli nolasÄmos kartÄjumos. Katrs no kartÄjumiem veic Å”auru uzdevumu. RezultÄtÄ iespÄjama starpposma atkļūdoÅ”ana, reÄ£istrÄÅ”ana un datu sagatavoÅ”anas posmu vizualizÄcija.
Tika nolemts diskretizÄt validÄcijas algoritmu Å”Ädos apakÅ”posmos:
- TV tÄ«kla skatÄ«Å”anÄs atkarÄ«bu regresijas veidoÅ”ana reÄ£ionÄ, skatot visus reÄ£iona tÄ«klus 60 dienas.
- Studentu atlikuma (faktisko vÄrtÄ«bu novirzes no regresijas modeļa prognozÄtajÄm) aprÄÄ·ins visiem regresijas punktiem un aprÄÄ·inÄtajai dienai.
- AnomÄlu reÄ£ionu-tÄ«klu pÄru izlase, kur norÄÄ·inu dienas studentizÄtais atlikums pÄrsniedz normu (norÄda darbÄ«bas iestatÄ«jumi).
- KoriÄ£ÄtÄ studentizÄtÄ atlikuma pÄrrÄÄ·ins anomÄlajiem reÄ£iona-TV tÄ«kla pÄriem katram respondentam, kurÅ” skatÄ«jÄs tÄ«klu reÄ£ionÄ, nosakot Ŕī respondenta devumu (studentizÄtÄ atlikuma izmaiÅu apjoms), izslÄdzot Ŕī respondenta skatÄ«Å”anos no izlases. .
- MeklÄjiet kandidÄtus, kuru izslÄgÅ”ana atgriež studentu algas dienas atlikumu normÄlÄ stÄvoklÄ«.
IepriekÅ” minÄtais piemÄrs apstiprina hipotÄzi, ka datu inženierim jau ir pÄrÄk daudz prÄtÄ... Un, ja tas tieÅ”Äm ir "inženieris", nevis "kodÄtÄjs", tad bailes no profesionÄlÄ degradÄcijas, izmantojot zema koda rÄ«kus, viÅÅ” beidzot jÄatkÄpjas.
Ko vÄl var darÄ«t zems kods?
Zema koda rÄ«ka pielietoÅ”anas joma datu pakeÅ”u un straumÄÅ”anas apstrÄdei bez nepiecieÅ”amÄ«bas manuÄli rakstÄ«t kodu Scala nebeidzas.
Zema koda izmantoÅ”ana datalake izstrÄdÄ mums jau ir kļuvusi par standartu. MÄs droÅ”i vien varam teikt, ka risinÄjumi, kuru pamatÄ ir Hadoop steka, seko klasisko DWH izstrÄdes ceļam, pamatojoties uz RDBMS. Zema koda rÄ«ki Hadoop stekÄ var atrisinÄt gan datu apstrÄdes uzdevumus, gan galÄ«go BI saskarÅu izveides uzdevumu. TurklÄt jÄatzÄ«mÄ, ka BI var nozÄ«mÄt ne tikai datu attÄloÅ”anu, bet arÄ« to rediÄ£ÄÅ”anu, ko veic biznesa lietotÄji. MÄs bieži izmantojam Å”o funkcionalitÄti, veidojot analÄ«tiskÄs platformas finanÅ”u sektoram.
Cita starpÄ, izmantojot zemu kodu un jo Ä«paÅ”i Datagram, ir iespÄjams atrisinÄt datu plÅ«smas objektu izcelsmes izsekoÅ”anas problÄmu ar atomitÄti lÄ«dz atseviŔķiem laukiem (lÄ«nija). Lai to izdarÄ«tu, zema koda rÄ«ks ievieÅ” saskarni ar Apache Atlas un Cloudera Navigator. BÅ«tÄ«bÄ izstrÄdÄtÄjam ir jÄreÄ£istrÄ objektu kopa Atlas vÄrdnÄ«cÄs un, veidojot kartÄjumus, jÄatsaucas uz reÄ£istrÄtajiem objektiem. Datu izcelsmes izsekoÅ”anas vai objektu atkarÄ«bu analÄ«zes mehÄnisms ietaupa daudz laika, kad nepiecieÅ”ams veikt uzlabojumus aprÄÄ·inu algoritmos. PiemÄram, sagatavojot finanÅ”u pÄrskatus, Ŕī iespÄja ļauj ÄrtÄk pÄrdzÄ«vot likumdoÅ”anas izmaiÅu periodu. Galu galÄ, jo labÄk mÄs saprotam starpformu atkarÄ«bu detalizÄta slÄÅa objektu kontekstÄ, jo mazÄk sastapsimies ar āpÄkÅ”Åiemā defektiem un samazinÄsim pÄrstrÄdÄjumu skaitu.
Datu kvalitÄte un zems kods
VÄl viens uzdevums, ko Mediascope projektÄ Ä«stenoja zema koda rÄ«ks, bija datu kvalitÄtes klases uzdevums. ÄŖpaÅ”a izpÄtes uzÅÄmuma projekta datu pÄrbaudes cauruļvada ievieÅ”anas iezÄ«me bija ietekmes trÅ«kums uz galveno datu aprÄÄ·inu plÅ«smas veiktspÄju un Ätrumu. Lai varÄtu organizÄt neatkarÄ«gas datu pÄrbaudes plÅ«smas, tika izmantota jau pazÄ«stamÄ Apache Airflow. TÄ kÄ katrs datu veidoÅ”anas posms bija gatavs, paralÄli tika palaista atseviŔķa DQ cauruļvada daļa.
Tiek uzskatÄ«ts par labu praksi datu kvalitÄtes uzraudzÄ«bu no brīža, kad tie tiek ieviesti analÄ«tiskajÄ platformÄ. Å emot vÄrÄ informÄciju par metadatiem, mÄs varam pÄrbaudÄ«t atbilstÄ«bu pamatnosacÄ«jumiem no brīža, kad informÄcija nonÄk primÄrajÄ slÄnÄ« - nevis nulles, ierobežojumi, ÄrÄjÄs atslÄgas. Å Ä« funkcionalitÄte ir ieviesta, pamatojoties uz automÄtiski Ä£enerÄtiem datu kvalitÄtes saimes kartÄjumiem programmÄ Datagram. Koda Ä£enerÄÅ”ana Å”ajÄ gadÄ«jumÄ ir balstÄ«ta arÄ« uz modeļa metadatiem. Mediascope projektÄ saskarne tika veikta ar Enterprise Architect produkta metadatiem.
Savienojot mazkoda rÄ«ku ar Enterprise Architect, automÄtiski tika Ä£enerÄtas Å”Ädas pÄrbaudes:
- PÄrbaude, vai laukos ar modifikatoru ānot nullā ir ānullā vÄrtÄ«bas;
- PrimÄrÄs atslÄgas dublikÄtu klÄtbÅ«tnes pÄrbaude;
- entÄ«tijas ÄrÄjÄs atslÄgas pÄrbaude;
- Virknes unikalitÄtes pÄrbaude, pamatojoties uz lauku kopu.
SarežģītÄkÄm datu pieejamÄ«bas un uzticamÄ«bas pÄrbaudÄm tika izveidota kartÄÅ”ana ar Scala Expression, kas kÄ ievadi izmanto ÄrÄju Spark SQL pÄrbaudes kodu, ko sagatavojuÅ”i Zeppelin analÄ«tiÄ·i.
Protams, automÄtiska Äeku Ä£enerÄÅ”ana ir jÄpanÄk pakÄpeniski. AprakstÄ«tÄ projekta ietvaros pirms tam tika veiktas Å”Ädas darbÄ«bas:
- DQ ieviests Zeppelin piezīmjdatoros;
- DQ iebÅ«vÄts kartÄÅ”anÄ;
- DQ atseviŔķu masveida kartÄjumu veidÄ, kas satur veselu pÄrbaužu komplektu atseviŔķai entÄ«tijai;
- UniversÄli parametrizÄti DQ kartÄjumi, kas pieÅem informÄciju par metadatiem un biznesa pÄrbaudÄm kÄ ievadi.
IespÄjams, ka galvenÄ parametrizÄta pÄrbaudes pakalpojuma izveides priekÅ”rocÄ«ba ir laika samazinÄjums, kas nepiecieÅ”ams funkcionalitÄtes nodroÅ”inÄÅ”anai ražoÅ”anas vidÄ. JaunÄs kvalitÄtes pÄrbaudes var apiet klasisko koda netieÅ”Äs piegÄdes modeli, izmantojot izstrÄdes un testÄÅ”anas vidi:
- Visas metadatu pÄrbaudes tiek Ä£enerÄtas automÄtiski, kad modelis tiek modificÄts EA;
- Datu pieejamÄ«bas pÄrbaudes (jebkuru datu esamÄ«bas noteikÅ”ana konkrÄtÄ brÄ«dÄ«) var tikt Ä£enerÄtas, pamatojoties uz direktoriju, kurÄ tiek saglabÄts paredzamais nÄkamÄs datu daļas parÄdÄ«Å”anÄs laiks objektu kontekstÄ;
- Biznesa datu validÄcijas pÄrbaudes Zeppelin piezÄ«mjdatoros izveido analÄ«tiÄ·i. No turienes tie tiek nosÅ«tÄ«ti tieÅ”i uz DQ moduļa iestatÄ«Å”anas tabulÄm ražoÅ”anas vidÄ.
NepastÄv risks, ka skripti tiks tieÅ”i nosÅ«tÄ«ti uz ražoÅ”anu. Pat ar sintakses kļūdu maksimums, kas mÅ«s apdraud, ir vienas pÄrbaudes neveikÅ”ana, jo datu aprÄÄ·inu plÅ«sma un kvalitÄtes pÄrbaudes palaiÅ”anas plÅ«sma ir atdalÄ«tas viena no otras.
BÅ«tÄ«bÄ DQ pakalpojums pastÄvÄ«gi darbojas ražoÅ”anas vidÄ un ir gatavs sÄkt savu darbu brÄ«dÄ«, kad parÄdÄs nÄkamie dati.
TÄ vietÄ, lai noslÄgtu
Zema koda izmantoÅ”anas priekÅ”rocÄ«ba ir acÄ«mredzama. IzstrÄdÄtÄjiem lietojumprogramma nav jÄizstrÄdÄ no nulles. Un programmÄtÄjs, kas atbrÄ«vots no papildu uzdevumiem, nodroÅ”ina ÄtrÄku rezultÄtu. Ätrums savukÄrt atbrÄ«vo papildu laiku optimizÄcijas problÄmu risinÄÅ”anai. TÄpÄc Å”ajÄ gadÄ«jumÄ varat paļauties uz labÄku un ÄtrÄku risinÄjumu.
Protams, zemais kods nav panaceja, un maģija nenotiks pati par sevi:
- Zema koda nozare piedzÄ«vo āspÄcÄ«gÄkasā stadiju, un vÄl nav vienotu rÅ«pniecÄ«bas standartu;
- Daudzi zema koda risinÄjumi nav bezmaksas, un to iegÄdei ir jÄbÅ«t apzinÄtam solim, kas jÄveic, pilnÄ«bÄ pÄrliecinoties par to izmantoÅ”anas finansiÄlajiem ieguvumiem;
- Daudzi zema koda risinÄjumi ne vienmÄr labi darbojas ar GIT/SVN. Vai arÄ« tos ir neÄrti lietot, ja Ä£enerÄtais kods ir paslÄpts;
- PaplaÅ”inot arhitektÅ«ru, var bÅ«t nepiecieÅ”ams pilnveidot zemÄ koda risinÄjumu, kas, savukÄrt, izraisa āpieÄ·erÅ”anÄs un atkarÄ«basā efektu zemÄ koda risinÄjuma piegÄdÄtÄjam.
- Ir iespÄjams atbilstoÅ”s droŔības lÄ«menis, taÄu tas ir ļoti darbietilpÄ«gs un grÅ«ti Ä«stenojams zema koda sistÄmu dzinÄjos. Zema koda platformas jÄizvÄlas ne tikai pÄc principa, lai gÅ«tu labumu no to izmantoÅ”anas. IzvÄloties, ir vÄrts uzdot jautÄjumus par funkcionalitÄtes pieejamÄ«bu piekļuves kontrolei un identifikÄcijas datu deleÄ£ÄÅ”anai/eskalÄcijai visas organizÄcijas IT ainavas lÄ«menÄ«.
TomÄr, ja visi izvÄlÄtÄs sistÄmas trÅ«kumi jums ir zinÄmi un ieguvumi no tÄs izmantoÅ”anas tomÄr ir dominÄjoÅ”ais vairÄkums, tad bez bailÄm pÄrejiet pie maza koda. TurklÄt pÄreja uz to ir neizbÄgama ā tÄpat kÄ jebkura evolÅ«cija ir neizbÄgama.
Ja viens izstrÄdÄtÄjs zema koda platformÄ veic savu darbu ÄtrÄk nekÄ divi izstrÄdÄtÄji bez zema koda, tas dod uzÅÄmumam priekÅ”rocÄ«bu visos aspektos. Slieksnis ienÄkÅ”anai zema koda risinÄjumos ir zemÄks nekÄ ātradicionÄlajÄsā tehnoloÄ£ijÄs, un tas pozitÄ«vi ietekmÄ personÄla trÅ«kuma problÄmu. Izmantojot zema koda rÄ«kus, iespÄjams paÄtrinÄt funkcionÄlo komandu mijiedarbÄ«bu un ÄtrÄk pieÅemt lÄmumus par izvÄlÄtÄ datu zinÄtnes pÄtniecÄ«bas ceļa pareizÄ«bu. Zema lÄ«meÅa platformas var veicinÄt organizÄcijas digitÄlo transformÄciju, jo izstrÄdÄtos risinÄjumus var saprast netehniskie speciÄlisti (Ä«paÅ”i biznesa lietotÄji).
Ja jums ir stingri termiÅi, noslogota biznesa loÄ£ika, tehnoloÄ£isko zinÄÅ”anu trÅ«kums un jums ir jÄpaÄtrina laiks, lai nonÄktu tirgÅ«, zems kods ir viens no veidiem, kÄ apmierinÄt jÅ«su vajadzÄ«bas.
Nevar noliegt tradicionÄlo izstrÄdes rÄ«ku nozÄ«mi, taÄu daudzos gadÄ«jumos zema koda risinÄjumu izmantoÅ”ana ir labÄkais veids, kÄ palielinÄt risinÄmo uzdevumu efektivitÄti.
Avots: www.habr.com