Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

Pred časom sme stáli pred otázkou výberu ETL nástroja pre prácu s Big Data. Predtým používané riešenie Informatica BDM nám nevyhovovalo z dôvodu obmedzenej funkčnosti. Jeho použitie sa zredukovalo na rámec pre spúšťanie príkazov spark-submit. Na trhu nebolo veľa analógov, ktoré by v princípe vedeli pracovať s objemom dát, s ktorými sa denne stretávame. Nakoniec sme zvolili Ab Initio. Počas pilotných demonštrácií produkt vykazoval veľmi vysokú rýchlosť spracovania dát. V ruštine nie sú o Ab Initiovi takmer žiadne informácie, preto sme sa rozhodli porozprávať o našich skúsenostiach na Habré.

Ab Initio má mnoho klasických a nezvyčajných transformácií, ktorých kód je možné rozšíriť pomocou vlastného jazyka PDL. Pre malý podnik bude takýto výkonný nástroj pravdepodobne prehnaný a väčšina jeho schopností môže byť drahá a nevyužitá. Ale ak je vaša mierka blízka Sberovovej, potom môže byť pre vás zaujímavá Ab Initio.

Pomáha firme hromadiť znalosti globálne a rozvíjať ekosystém a vývojárovi zlepšiť svoje zručnosti v ETL, zlepšiť svoje znalosti v prostredí shell, poskytuje príležitosť zvládnuť jazyk PDL, poskytuje vizuálny obraz o procesoch načítania a zjednodušuje vývoj. vďaka množstvu funkčných komponentov.

V tomto príspevku budem hovoriť o schopnostiach Ab Initio a poskytnem porovnávacie charakteristiky jeho práce s Hive a GreenPlum.

  • Popis frameworku MDW a práce na jeho prispôsobení pre GreenPlum
  • Ab Initio porovnanie výkonu medzi Hive a GreenPlum
  • Práca Ab Initio s GreenPlum v režime Near Real Time


Funkčnosť tohto produktu je veľmi široká a vyžaduje si veľa času na štúdium. Pri správnych pracovných zručnostiach a správnom nastavení výkonu sú však výsledky spracovania dát veľmi pôsobivé. Použitie Ab Initio pre vývojárov môže poskytnúť zaujímavý zážitok. Toto je nový pohľad na vývoj ETL, hybrid medzi vizuálnym prostredím a vývojom sťahovania v jazyku podobnom skriptu.

Firmy rozvíjajú svoje ekosystémy a tento nástroj sa im hodí viac ako kedykoľvek predtým. S Ab Initio môžete zhromažďovať vedomosti o svojom súčasnom podnikaní a použiť tieto znalosti na rozšírenie starých a otvorenie nových podnikov. Alternatívy k Ab Initio zahŕňajú vizuálne vývojové prostredia Informatica BDM a nevizuálne vývojové prostredia Apache Spark.

Popis Ab Initio

Ab Initio, rovnako ako ostatné ETL nástroje, je kolekcia produktov.

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

Ab Initio GDE (Graphical Development Environment) je prostredie pre vývojára, v ktorom konfiguruje transformácie dát a prepája ich s dátovými tokmi vo forme šípok. V tomto prípade sa takáto množina transformácií nazýva graf:

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

Vstupné a výstupné spojenia funkčných komponentov sú porty a obsahujú polia vypočítané v rámci transformácií. Niekoľko grafov spojených tokmi vo forme šípok v poradí ich vykonávania sa nazýva plán.

Funkčných komponentov je niekoľko stoviek, čo je veľa. Mnohé z nich sú vysoko špecializované. Možnosti klasických transformácií v Ab Initio sú širšie ako v iných ETL nástrojoch. Napríklad Join má viacero výstupov. Okrem výsledku pripojenia množín údajov môžete získať výstupné záznamy vstupných množín údajov, ktorých kľúče nebolo možné pripojiť. Môžete tiež získať odmietnutia, chyby a protokol operácie transformácie, ktorý možno čítať v rovnakom stĺpci ako textový súbor a spracovať s inými transformáciami:

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

Alebo napríklad môžete zhmotniť prijímač údajov vo forme tabuľky a čítať z nej údaje v rovnakom stĺpci.

Existujú originálne premeny. Napríklad transformácia skenovania má funkčnosť podobnú analytickým funkciám. Existujú transformácie so samovysvetľujúcimi názvami: Create Data, Read Excel, Normalize, Sort within Groups, Run Program, Run SQL, Join with DB, atď. Grafy môžu využívať run-time parametre vrátane možnosti odovzdávania parametrov z alebo do operačný systém. Súbory s predpripravenou sadou parametrov odovzdaných do grafu sa nazývajú sady parametrov (psets).

Ako sa očakávalo, Ab Initio GDE má svoje vlastné úložisko s názvom EME (Enterprise Meta Environment). Vývojári majú možnosť pracovať s lokálnymi verziami kódu a kontrolovať ich vývoj v centrálnom úložisku.

Počas vykonávania alebo po vykonaní grafu je možné kliknúť na ľubovoľný tok spájajúci transformáciu a pozrieť sa na údaje, ktoré prešli medzi týmito transformáciami:

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

Je tiež možné kliknúť na ľubovoľný stream a zobraziť podrobnosti sledovania - v koľkých paralelách transformácia fungovala, koľko riadkov a bajtov sa načítalo do ktorej z paralel:

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

Vyhotovenie grafu je možné rozdeliť do fáz a označiť, že niektoré transformácie je potrebné vykonať najskôr (v nulovej fáze), ďalšie v prvej fáze, ďalšie v druhej fáze atď.

Pre každú transformáciu si môžete zvoliť takzvané rozloženie (kde sa vykoná): bez paralel alebo v paralelných vláknach, ktorých počet je možné určiť. Dočasné súbory, ktoré Ab Initio vytvára, keď sú spustené transformácie, je zároveň možné umiestniť do súborového systému servera aj do HDFS.

V každej transformácii si na základe predvolenej šablóny môžete vytvoriť vlastný skript v PDL, ktorý je tak trochu ako shell.

Pomocou PDL môžete rozšíriť funkčnosť transformácií a najmä môžete dynamicky (za behu) generovať ľubovoľné fragmenty kódu v závislosti od parametrov behu.

Ab Initio má tiež dobre vyvinutú integráciu s OS cez shell. Konkrétne Sberbank používa linux ksh. Premenné si môžete vymieňať s shellom a používať ich ako parametre grafu. Môžete zavolať vykonávanie grafov Ab Initio z shellu a spravovať Ab Initio.

Okrem Ab Initio GDE je súčasťou dodávky mnoho ďalších produktov. Existuje vlastný Co>Operation System s tvrdením, že sa nazýva operačný systém. Existuje Control>Centrum, kde môžete plánovať a monitorovať toky sťahovania. Existujú produkty na vývoj na primitívnejšej úrovni, než umožňuje Ab Initio GDE.

Popis frameworku MDW a práce na jeho prispôsobení pre GreenPlum

Dodávateľ spolu so svojimi produktmi dodáva produkt MDW (Metadata Driven Warehouse), čo je grafový konfigurátor určený na pomoc pri typických úlohách napĺňania dátových skladov alebo dátových trezorov.

Obsahuje vlastné (projektovo špecifické) analyzátory metadát a hotové generátory kódu hneď po vybalení.

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum
Ako vstup dostane MDW dátový model, konfiguračný súbor pre nastavenie pripojenia k databáze (Oracle, Teradata alebo Hive) a niektoré ďalšie nastavenia. Časť špecifická pre projekt napríklad nasadí model do databázy. Predpripravená časť produktu generuje pre ne grafy a konfiguračné súbory načítaním údajov do modelových tabuliek. V tomto prípade sa vytvárajú grafy (a psety) pre niekoľko režimov inicializácie a prírastkovej práce na aktualizácii entít.

V prípade Hive a RDBMS sa generujú rôzne grafy pre inicializáciu a prírastkové aktualizácie údajov.

V prípade Hive sú prichádzajúce delta dáta prepojené cez Ab Initio Join s dátami, ktoré boli v tabuľke pred aktualizáciou. Zavádzače údajov v MDW (v Hive aj RDBMS) nielen vkladajú nové údaje z delty, ale tiež uzatvárajú obdobia relevantnosti údajov, ktorých primárne kľúče dostali deltu. Okrem toho musíte prepísať nezmenenú časť údajov. Musí sa to však urobiť, pretože Hive nemá operácie odstraňovania alebo aktualizácie.

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

V prípade RDBMS vyzerajú grafy pre prírastkovú aktualizáciu údajov optimálnejšie, pretože RDBMS majú skutočné možnosti aktualizácie.

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

Prijatá delta sa načíta do pomocnej tabuľky v databáze. Potom sa delta pripojí k údajom, ktoré boli v tabuľke pred aktualizáciou. A to sa robí pomocou SQL pomocou vygenerovaného SQL dotazu. Ďalej pomocou príkazov SQL delete+insert sa do cieľovej tabuľky vložia nové údaje z delty a uzavrú sa obdobia relevantnosti údajov, ktorých primárne kľúče dostali delta.
Nie je potrebné prepisovať nezmenené údaje.

Dospeli sme teda k záveru, že v prípade Hive musí MDW ísť prepísať celú tabuľku, pretože Hive nemá funkciu aktualizácie. A nebolo vynájdené nič lepšie ako úplné prepísanie údajov pri aktualizácii. Naopak, v prípade RDBMS tvorcovia produktu považovali za potrebné zveriť prepojenie a aktualizáciu tabuliek využívaniu SQL.

Pre projekt v Sberbank sme vytvorili novú, opakovane použiteľnú implementáciu databázového nakladača pre GreenPlum. Toto bolo urobené na základe verzie, ktorú MDW generuje pre Teradata. Bola to Teradata, a nie Oracle, kto sa k tomu priblížil a najlepšie, pretože... je tiež systémom MPP. Pracovné metódy, ako aj syntax Teradata a GreenPlum sa ukázali byť podobné.

Príklady MDW-kritických rozdielov medzi rôznymi RDBMS sú nasledovné. V GreenPlum, na rozdiel od Teradata, pri vytváraní tabuliek musíte napísať klauzulu

distributed by

Teradata píše:

delete <table> all

, a v GreenPlum píšu

delete from <table>

V Oracle píšu na účely optimalizácie

delete from t where rowid in (<соединение t с дельтой>)

, a Teradata a GreenPlum píšu

delete from t where exists (select * from delta where delta.pk=t.pk)

Upozorňujeme tiež, že na to, aby Ab Initio fungovalo s GreenPlum, bolo potrebné nainštalovať klienta GreenPlum na všetky uzly klastra Ab Initio. Je to preto, že sme sa k GreenPlum pripojili súčasne zo všetkých uzlov v našom klastri. A aby bolo čítanie z GreenPlum paralelné a každé paralelné vlákno Ab Initio čítalo svoju vlastnú časť údajov z GreenPlum, museli sme umiestniť konštrukciu, ktorej rozumie Ab Initio, do sekcie „kde“ SQL dotazov.

where ABLOCAL()

a určiť hodnotu tejto konštrukcie zadaním parametra čítania z transformačnej databázy

ablocal_expr=«string_concat("mod(t.", string_filter_out("{$TABLE_KEY}","{}"), ",", (decimal(3))(number_of_partitions()),")=", (decimal(3))(this_partition()))»

, ktorý sa zostaví do niečoho podobného

mod(sk,10)=3

, t.j. musíte GreenPlum požiadať o explicitný filter pre každý oddiel. Pri iných databázach (Teradata, Oracle) môže Ab Initio vykonávať túto paralelizáciu automaticky.

Ab Initio porovnanie výkonu medzi Hive a GreenPlum

Sberbank uskutočnila experiment na porovnanie výkonnosti grafov generovaných MDW vo vzťahu k Hive a vo vzťahu k GreenPlum. V rámci experimentu bolo v prípade Hive 5 uzlov na rovnakom klastri ako Ab Initio a v prípade GreenPlum boli 4 uzly na samostatnom klastri. Tie. Hive mal oproti GreenPlum určitú hardvérovú výhodu.

Zvažovali sme dva páry grafov, ktoré vykonávajú rovnakú úlohu aktualizácie údajov v Hive a GreenPlum. Zároveň boli spustené grafy generované konfigurátorom MDW:

  • počiatočné načítanie + prírastkové načítanie náhodne generovaných údajov do tabuľky Hive
  • počiatočné načítanie + prírastkové načítanie náhodne generovaných údajov do rovnakej tabuľky GreenPlum

V oboch prípadoch (Hive a GreenPlum) spustili nahrávanie do 10 paralelných vlákien na rovnakom klastri Ab Initio. Ab Initio uložil prechodné dáta pre výpočty v HDFS (v zmysle Ab Initio bolo použité rozloženie MFS pomocou HDFS). Jeden riadok náhodne generovaných údajov zaberal v oboch prípadoch 200 bajtov.

Výsledok bol takýto:

Úľ:

Počiatočné načítanie v Hive

Vložené riadky
6 000 000
60 000 000
600 000 000

Trvanie inicializácie
sťahovanie za pár sekúnd
41
203
1 601

Prírastkové načítanie v Hive

Počet dostupných riadkov v
cieľovej tabuľky na začiatku experimentu
6 000 000
60 000 000
600 000 000

Počet aplikovaných delta čiar
cieľovej tabuľky počas experimentu
6 000 000
6 000 000
6 000 000

Trvanie prírastku
sťahovanie za pár sekúnd
88
299
2 541

Zelená slivka:

Počiatočné načítanie v GreenPlum

Vložené riadky
6 000 000
60 000 000
600 000 000

Trvanie inicializácie
sťahovanie za pár sekúnd
72
360
3 631

Prírastkové načítanie v GreenPlum

Počet dostupných riadkov v
cieľovej tabuľky na začiatku experimentu
6 000 000
60 000 000
600 000 000

Počet aplikovaných delta čiar
cieľovej tabuľky počas experimentu
6 000 000
6 000 000
6 000 000

Trvanie prírastku
sťahovanie za pár sekúnd
159
199
321

Vidíme, že rýchlosť počiatočného načítania v Hive aj GreenPlum lineárne závisí od množstva dát a z dôvodov lepšieho hardvéru je pre Hive o niečo rýchlejšia ako pre GreenPlum.

Prírastkové načítanie v Hive tiež lineárne závisí od objemu predtým načítaných údajov dostupných v cieľovej tabuľke a postupuje pomerne pomaly, keď objem rastie. Je to spôsobené potrebou úplne prepísať cieľovú tabuľku. To znamená, že aplikácia malých zmien na obrovské tabuľky nie je pre Hive dobrým príkladom použitia.

Prírastkové načítanie v GreenPlum slabo závisí od objemu predtým načítaných údajov dostupných v cieľovej tabuľke a prebieha pomerne rýchlo. Stalo sa tak vďaka SQL Joins a architektúre GreenPlum, ktorá umožňuje operáciu vymazania.

GreenPlum teda pridáva deltu pomocou metódy delete+insert, ale Hive nemá operácie vymazania ani aktualizácie, takže celé dátové pole bolo nútené úplne prepísať počas prírastkovej aktualizácie. Porovnanie buniek zvýraznených tučným písmom je najprezreteľnejšie, pretože zodpovedá najbežnejšej možnosti používania sťahovania náročných na zdroje. Vidíme, že GreenPlum porazil Hive v tomto teste 8-krát.

Práca Ab Initio s GreenPlum v režime Near Real Time

V tomto experimente otestujeme schopnosť Ab Initio aktualizovať tabuľku GreenPlum náhodne generovanými kúskami údajov takmer v reálnom čase. Zoberme si tabuľku GreenPlum dev42_1_db_usl.TESTING_SUBJ_org_finval, s ktorou budeme pracovať.

Na prácu s ním použijeme tri Ab Initio grafy:

1) Graph Create_test_data.mp – vytvára dátové súbory v HDFS so 10 6 000 riadkami v 000 paralelných vláknach. Dáta sú náhodné, ich štruktúra je usporiadaná na vloženie do našej tabuľky

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

2) Graf mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset – MDW generovaný graf inicializáciou vkladania údajov do našej tabuľky v 10 paralelných vláknach (používajú sa testovacie údaje vygenerované grafom (1))

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

3) Graf mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset – graf vygenerovaný MDW pre prírastkovú aktualizáciu našej tabuľky v 10 paralelných vláknach s použitím časti čerstvo prijatých údajov (delta) vygenerovaných grafom (1)

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum

Spustite nižšie uvedený skript v režime NRT:

  • vygenerovať 6 000 000 testovacích riadkov
  • vykonať počiatočné načítanie vložte 6 000 000 testovacích riadkov do prázdnej tabuľky
  • zopakujte postupné sťahovanie 5-krát
    • vygenerovať 6 000 000 testovacích riadkov
    • vykonať prírastkové vloženie 6 000 000 testovacích riadkov do tabuľky (v tomto prípade je čas vypršania platnosti valid_to_ts nastavený na staré údaje a vložia sa novšie údaje s rovnakým primárnym kľúčom)

Tento scenár napodobňuje režim reálneho fungovania určitého podnikového systému – pomerne veľká časť nových dát sa objaví v reálnom čase a okamžite sa naleje do GreenPlum.

Teraz sa pozrime na denník skriptu:

Začnite Create_test_data.input.pset 2020-06-04 11:49:11
Dokončite Create_test_data.input.pset 2020-06-04 11:49:37
Začnite mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:49:37
Dokončite mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:50:42
Začnite Create_test_data.input.pset 2020-06-04 11:50:42
Dokončite Create_test_data.input.pset 2020-06-04 11:51:06
Začnite mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:51:06
Dokončite mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:53:41
Začnite Create_test_data.input.pset 2020-06-04 11:53:41
Dokončite Create_test_data.input.pset 2020-06-04 11:54:04
Začnite mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:54:04
Dokončite mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:56:51
Začnite Create_test_data.input.pset 2020-06-04 11:56:51
Dokončite Create_test_data.input.pset 2020-06-04 11:57:14
Začnite mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:57:14
Dokončite mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:59:55
Začnite Create_test_data.input.pset 2020-06-04 11:59:55
Dokončite Create_test_data.input.pset 2020-06-04 12:00:23
Začnite mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 12:00:23
Dokončite mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 12:03:23
Začnite Create_test_data.input.pset 2020-06-04 12:03:23
Dokončite Create_test_data.input.pset 2020-06-04 12:03:49
Začnite mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 12:03:49
Dokončite mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 12:06:46

Ukazuje sa tento obrázok:

Graf
Doba spustenia
Čas ukončenia
Dĺžka

Create_test_data.input.pset
04.06.2020 11: 49: 11
04.06.2020 11: 49: 37
00:00:26

mdw_load.day_one.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 49: 37
04.06.2020 11: 50: 42
00:01:05

Create_test_data.input.pset
04.06.2020 11: 50: 42
04.06.2020 11: 51: 06
00:00:24

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 51: 06
04.06.2020 11: 53: 41
00:02:35

Create_test_data.input.pset
04.06.2020 11: 53: 41
04.06.2020 11: 54: 04
00:00:23

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 54: 04
04.06.2020 11: 56: 51
00:02:47

Create_test_data.input.pset
04.06.2020 11: 56: 51
04.06.2020 11: 57: 14
00:00:23

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 57: 14
04.06.2020 11: 59: 55
00:02:41

Create_test_data.input.pset
04.06.2020 11: 59: 55
04.06.2020 12: 00: 23
00:00:28

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 12: 00: 23
04.06.2020 12: 03: 23
00:03:00

Create_test_data.input.pset
04.06.2020 12: 03: 23
04.06.2020 12: 03: 49
00:00:26

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 12: 03: 49
04.06.2020 12: 06: 46
00:02:57

Vidíme, že 6 000 000 prírastkových riadkov sa spracuje za 3 minúty, čo je pomerne rýchle.
Ukázalo sa, že údaje v cieľovej tabuľke sú rozdelené takto:

select valid_from_ts, valid_to_ts, count(1), min(sk), max(sk) from dev42_1_db_usl.TESTING_SUBJ_org_finval group by valid_from_ts, valid_to_ts order by 1,2;

Keď máte Sber váhy. Použitie Ab Initio s Hive a GreenPlum
Môžete vidieť zhodu vložených údajov s časom spustenia grafov.
To znamená, že môžete spustiť prírastkové načítanie údajov do GreenPlum v Ab Initio s veľmi vysokou frekvenciou a pozorovať vysokú rýchlosť vkladania týchto údajov do GreenPlum. Samozrejme, nebude možné spustiť raz za sekundu, pretože Ab Initio, ako každý nástroj ETL, vyžaduje čas na „spustenie“ pri spustení.

Záver

Ab Initio sa v súčasnosti používa v Sberbank na vytvorenie Unified Semantic Data Layer (ESS). Tento projekt zahŕňa vybudovanie jednotnej verzie stavu rôznych bankových podnikateľských subjektov. Informácie pochádzajú z rôznych zdrojov, ktorých repliky sú pripravené na Hadoop. Na základe obchodných potrieb sa pripraví dátový model a popíšu sa transformácie dát. Ab Initio načítava informácie do ESN a stiahnuté dáta sú nielen zaujímavé pre samotný podnik, ale slúžia aj ako zdroj pre budovanie dátových trhov. Funkčnosť produktu zároveň umožňuje využívať rôzne systémy ako prijímač (Hive, Greenplum, Teradata, Oracle), čo umožňuje jednoducho pripraviť dáta pre podnik v rôznych požadovaných formátoch.

Možnosti Ab Initio sú široké, napríklad zahrnutý rámec MDW umožňuje vytvárať technické a obchodné historické údaje hneď po vybalení. Vývojárom Ab Initio umožňuje nevynájsť koleso, ale využiť mnohé existujúce funkčné komponenty, ktoré sú v podstate knižnice potrebné pri práci s údajmi.

Autor je odborníkom v odbornej komunite Sberbank SberProfi DWH/BigData. Odborná komunita SberProfi DWH/BigData je zodpovedná za rozvoj kompetencií v takých oblastiach, ako sú ekosystém Hadoop, Teradata, Oracle DB, GreenPlum, ako aj BI nástroje Qlik, SAP BO, Tableau atď.

Zdroj: hab.com

Pridať komentár