Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

Որոշ ժամանակ առաջ մենք բախվեցինք Big Data-ի հետ աշխատելու համար ETL գործիք ընտրելու հարցին: Նախկինում օգտագործված Informatica BDM լուծումը մեզ չէր համապատասխանում սահմանափակ ֆունկցիոնալության պատճառով: Դրա օգտագործումը կրճատվել է որպես կայծ-ներկայացնել հրամաններ գործարկելու շրջանակ: Շուկայում շատ անալոգներ չկային, որոնք սկզբունքորեն կարող էին աշխատել տվյալների այն ծավալի հետ, որոնց հետ մենք առնչվում ենք ամեն օր: Ի վերջո մենք ընտրեցինք Ab Initio-ն։ Փորձնական ցուցադրությունների ժամանակ արտադրանքը ցույց տվեց տվյալների մշակման շատ բարձր արագություն: Աբ Ինիտիոյի մասին ռուսերեն գրեթե ոչ մի տեղեկություն չկա, ուստի որոշեցինք մեր փորձի մասին խոսել Habré-ում։

Ab Initio-ն ունի շատ դասական և անսովոր փոխակերպումներ, որոնց կոդը կարող է ընդլայնվել՝ օգտագործելով իր սեփական PDL լեզուն: Փոքր բիզնեսի համար նման հզոր գործիքը, ամենայն հավանականությամբ, չափազանց մեծ կլինի, և դրա հնարավորությունների մեծ մասը կարող է թանկ և չօգտագործված լինել: Բայց եթե ձեր սանդղակը մոտ է Սբերովին, ապա Աբ Ինիտիոն կարող է ձեզ հետաքրքիր լինել:

Այն օգնում է բիզնեսին գլոբալ գիտելիք կուտակել և զարգացնել էկոհամակարգը, իսկ մշակողին՝ բարելավելու իր հմտությունները ETL-ում, բարելավել իր գիտելիքները shell-ում, հնարավորություն է տալիս տիրապետել PDL լեզվին, տալիս է բեռնման գործընթացների տեսողական պատկեր և հեշտացնում է զարգացումը: ֆունկցիոնալ բաղադրիչների առատության շնորհիվ:

Այս գրառման մեջ ես կխոսեմ Ab Initio-ի հնարավորությունների մասին և կներկայացնեմ նրա աշխատանքի համեմատական ​​բնութագրերը Hive-ի և GreenPlum-ի հետ:

  • MDW շրջանակի նկարագրությունը և աշխատանք GreenPlum-ի համար դրա հարմարեցման վրա
  • Ab Initio կատարողականի համեմատություն Hive-ի և GreenPlum-ի միջև
  • Աշխատանքային Ab Initio GreenPlum-ի հետ մոտ իրական ժամանակի ռեժիմում


Այս ապրանքի ֆունկցիոնալությունը շատ լայն է և շատ ժամանակ է պահանջում ուսումնասիրելու համար: Այնուամենայնիվ, պատշաճ աշխատանքային հմտությունների և կատարողականի ճիշտ պարամետրերի առկայության դեպքում տվյալների մշակման արդյունքները շատ տպավորիչ են: Ab Initio-ն ծրագրավորողի համար օգտագործելը կարող է հետաքրքիր փորձառություն ապահովել: Սա ETL-ի մշակման նոր մոտեցում է, որը հիբրիդ է տեսողական միջավայրի և ներբեռնման մշակման միջև սցենարի նման լեզվով:

Բիզնեսները զարգացնում են իրենց էկոհամակարգերը, և այս գործիքն առավել քան երբևէ հարմար է: Ab Initio-ի միջոցով դուք կարող եք կուտակել գիտելիքներ ձեր ընթացիկ բիզնեսի մասին և օգտագործել այդ գիտելիքները հին ու նոր բիզնեսներ բացելու համար: Ab Initio-ի այլընտրանքները ներառում են տեսողական զարգացման միջավայրեր Informatica BDM և ոչ տեսողական զարգացման միջավայրեր Apache Spark-ը:

Ab Initio-ի նկարագրությունը

Ab Initio-ն, ինչպես մյուս ETL գործիքները, ապրանքների հավաքածու է:

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

Ab Initio GDE (Գրաֆիկական զարգացման միջավայր) մշակողի համար միջավայր է, որտեղ նա կարգավորում է տվյալների փոխակերպումները և դրանք կապում է տվյալների հոսքերի հետ՝ սլաքների տեսքով: Այս դեպքում փոխակերպումների նման հավաքածուն կոչվում է գրաֆիկ.

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

Ֆունկցիոնալ բաղադրիչների մուտքային և ելքային կապերը պորտեր են և պարունակում են դաշտեր, որոնք հաշվարկված են փոխակերպումների շրջանակներում: Մի քանի գրաֆիկներ, որոնք կապված են հոսքերի միջոցով սլաքների տեսքով դրանց կատարման հերթականությամբ, կոչվում են պլան։

Կան մի քանի հարյուր ֆունկցիոնալ բաղադրիչներ, ինչը շատ է։ Նրանցից շատերը բարձր մասնագիտացված են: Ab Initio-ում դասական փոխակերպումների հնարավորություններն ավելի լայն են, քան այլ ETL գործիքներում: Օրինակ, Join-ն ունի բազմաթիվ ելքեր: Ի լրումն տվյալների հավաքածուների միացման արդյունքի, դուք կարող եք ստանալ մուտքային տվյալների հավաքածուների ելքային գրառումներ, որոնց բանալիները հնարավոր չէ միացնել: Կարող եք նաև ստանալ մերժումներ, սխալներ և վերափոխման գործողության մատյան, որը կարելի է կարդալ նույն սյունակում, ինչպես տեքստային ֆայլը և մշակվել այլ փոխակերպումների հետ.

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

Կամ, օրինակ, դուք կարող եք նյութականացնել տվյալների ստացողը աղյուսակի տեսքով և դրանից տվյալներ կարդալ նույն սյունակում:

Կան օրիգինալ վերափոխումներ. Օրինակ, Scan-ի փոխակերպումն ունի վերլուծական գործառույթների նման ֆունկցիոնալություն: Կան փոխակերպումներ ինքնաբացատրվող անուններով. Ստեղծել Տվյալներ, Կարդալ Excel, Նորմալացնել, Դասավորել Խմբերում, Գործարկել Ծրագիրը, Գործարկել SQL, Միանալ DB-ով և այլն: Գրաֆիկները կարող են օգտագործել գործարկման ժամանակի պարամետրերը, ներառյալ պարամետրերը փոխանցելու հնարավորությունը կամ օպերացիոն համակարգը: Գրաֆիկին փոխանցված պարամետրերի պատրաստի հավաքածու ունեցող ֆայլերը կոչվում են պարամետրերի հավաքածուներ (psets):

Ինչպես և սպասվում էր, Ab Initio GDE-ն ունի իր սեփական պահեստը, որը կոչվում է EME (Enterprise Meta Environment): Մշակողները հնարավորություն ունեն աշխատելու կոդի տեղական տարբերակների հետ և ստուգել դրանց զարգացումները կենտրոնական պահեստում:

Հնարավոր է կատարման ընթացքում կամ գրաֆիկը կատարելուց հետո սեղմել փոխակերպումը միացնող ցանկացած հոսքի վրա և դիտել այս փոխակերպումների միջև անցած տվյալները.

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

Հնարավոր է նաև սեղմել ցանկացած հոսքի վրա և տեսնել հետևելու մանրամասները. քանի զուգահեռ է աշխատել փոխակերպումը, քանի տող և բայթ է բեռնվել զուգահեռներից որում.

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

Կարելի է գրաֆիկի կատարումը բաժանել փուլերի և նշել, որ որոշ փոխակերպումներ պետք է կատարվեն նախ (զրոյական փուլում), հաջորդները՝ առաջին փուլում, հաջորդները՝ երկրորդ փուլում և այլն։

Յուրաքանչյուր փոխակերպման համար կարող եք ընտրել այսպես կոչված դասավորությունը (որտեղ այն կկատարվի) առանց զուգահեռների կամ զուգահեռ թելերի, որոնց թիվը կարելի է նշել։ Միևնույն ժամանակ, ժամանակավոր ֆայլերը, որոնք Ab Initio-ն ստեղծում է փոխակերպումների գործարկման ժամանակ, կարող են տեղադրվել ինչպես սերվերի ֆայլային համակարգում, այնպես էլ HDFS-ում:

Յուրաքանչյուր փոխակերպման դեպքում, հիմնվելով լռելյայն ձևանմուշի վրա, դուք կարող եք ստեղծել ձեր սեփական սցենարը PDL-ով, որը մի փոքր նման է կեղևի:

PDL-ի միջոցով դուք կարող եք ընդլայնել փոխակերպումների ֆունկցիոնալությունը և, մասնավորապես, կարող եք դինամիկ կերպով (աշխատանքի ժամանակ) ստեղծել կամայական կոդի բեկորներ՝ կախված գործարկման ժամանակի պարամետրերից:

Ab Initio-ն ունի նաև լավ զարգացած ինտեգրում ՕՀ-ի հետ shell-ի միջոցով: Մասնավորապես, Սբերբանկը օգտագործում է linux ksh: Դուք կարող եք փոխել փոփոխականները shell-ի հետ և օգտագործել դրանք որպես գրաֆիկի պարամետրեր: Դուք կարող եք զանգահարել Ab Initio գրաֆիկների կատարումը shell-ից և կառավարել Ab Initio-ն:

Բացի Ab Initio GDE-ից, առաքման մեջ ներառված են բազմաթիվ այլ ապրանքներ: Գոյություն ունի իր սեփական Co>Operation System-ը, որը կոչվելու է օպերացիոն համակարգ: Կա Control>Center, որտեղ դուք կարող եք պլանավորել և վերահսկել ներբեռնման հոսքերը: Կան ապրանքներ ավելի պարզունակ մակարդակով զարգացում կատարելու համար, քան թույլ է տալիս Ab Initio GDE-ն:

MDW շրջանակի նկարագրությունը և աշխատանք GreenPlum-ի համար դրա հարմարեցման վրա

Իր արտադրանքի հետ մեկտեղ վաճառողը մատակարարում է MDW (Metadata Driven Warehouse) արտադրանքը, որը գրաֆիկական կոնֆիգուրատոր է, որը նախատեսված է տվյալների պահեստների կամ տվյալների պահոցների համալրման բնորոշ առաջադրանքների համար:

Այն պարունակում է հատուկ (նախագծին հատուկ) մետատվյալների վերլուծիչներ և պատրաստի կոդերի գեներատորներ առանց տուփի:

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ
Որպես մուտքագրում, MDW-ն ստանում է տվյալների մոդել, կոնֆիգուրացիայի ֆայլ տվյալների բազայի հետ կապ հաստատելու համար (Oracle, Teradata կամ Hive) և որոշ այլ կարգավորումներ: Ծրագրին հատուկ մասը, օրինակ, տեղակայում է մոդելը տվյալների բազայում: Արտադրանքի արտապատկերված մասը ստեղծում է գրաֆիկներ և կազմաձևման ֆայլեր նրանց համար՝ բեռնելով տվյալները մոդելային աղյուսակներում: Այս դեպքում, գրաֆիկները (և կեղծերը) ստեղծվում են մի քանի եղանակների սկզբնավորման և արդիականացման աշխատանքների համար:

Hive-ի և RDBMS-ի դեպքում տարբեր գրաֆիկներ են ստեղծվում սկզբնավորման և տվյալների հավելյալ թարմացումների համար:

Hive-ի դեպքում մուտքային դելտա տվյալները միացված են Ab Initio Join-ի միջոցով այն տվյալների հետ, որոնք եղել են աղյուսակում մինչ թարմացումը: Տվյալների բեռնիչները MDW-ում (ինչպես Hive-ում, այնպես էլ RDBMS-ում) ոչ միայն տեղադրում են նոր տվյալներ դելտայից, այլև փակում են այն տվյալների համապատասխանության ժամանակահատվածները, որոնց հիմնական բանալիները ստացել են դելտան: Բացի այդ, դուք պետք է վերաշարադրեք տվյալների անփոփոխ մասը: Բայց դա պետք է արվի, քանի որ Hive-ը չունի ջնջման կամ թարմացման գործողություններ:

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

RDBMS-ի դեպքում տվյալների հավելյալ թարմացման գրաֆիկներն ավելի օպտիմալ տեսք ունեն, քանի որ RDBMS-ն իրական թարմացման հնարավորություններ ունի:

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

Ստացված դելտան բեռնվում է տվյալների բազայի միջանկյալ աղյուսակում: Դրանից հետո դելտան միացված է այն տվյալներին, որոնք եղել են աղյուսակում մինչև թարմացումը։ Եվ դա արվում է SQL-ի միջոցով՝ օգտագործելով ստեղծված SQL հարցումը: Այնուհետև, օգտագործելով SQL հրամանները delete+insert, դելտայից նոր տվյալներ տեղադրվում են թիրախային աղյուսակում և փակվում են այն տվյալների համապատասխանության ժամանակահատվածները, որոնց հիմնական բանալիները ստացել են դելտան:
Անփոփոխ տվյալները վերաշարադրելու կարիք չկա։

Այսպիսով, մենք եկանք այն եզրակացության, որ Hive-ի դեպքում MDW-ն պետք է գնա ամբողջ աղյուսակը վերաշարադրելու, քանի որ Hive-ը չունի թարմացման գործառույթ: Եվ ոչինչ ավելի լավ չէ, քան տվյալները ամբողջությամբ վերաշարադրելը, երբ թարմացումը հորինված է: RDBMS-ի դեպքում, ընդհակառակը, ապրանքի ստեղծողները անհրաժեշտ են գտել աղյուսակների միացումն ու թարմացումը վստահել SQL-ի օգտագործմանը։

Սբերբանկում նախագծի համար մենք ստեղծեցինք GreenPlum-ի տվյալների բազայի բեռնիչի նոր, բազմակի օգտագործման իրականացում: Սա արվել է այն տարբերակի հիման վրա, որը MDW-ն ստեղծում է Teradata-ի համար: Դա Teradata-ն էր, և ոչ թե Oracle-ը, որն ամենամոտն ու լավագույնն էր դրա համար, քանի որ... նաև MPP համակարգ է: Teradata-ի և GreenPlum-ի աշխատանքային մեթոդները, ինչպես նաև շարահյուսությունը, պարզվեց, որ նման են:

Տարբեր RDBMS-ների միջև MDW-կրիտիկական տարբերությունների օրինակները հետևյալն են. GreenPlum-ում, ի տարբերություն Teradata-ի, աղյուսակներ ստեղծելիս անհրաժեշտ է գրել կետ

distributed by

Teradata-ն գրում է.

delete <table> all

, իսկ GreenPlum-ում գրում են

delete from <table>

Oracle-ում օպտիմալացման նպատակով գրում են

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

, իսկ Teradata-ն ու GreenPlum-ը գրում են

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

Մենք նաև նշում ենք, որ որպեսզի Ab Initio-ն աշխատի GreenPlum-ի հետ, անհրաժեշտ էր տեղադրել GreenPlum հաճախորդը Ab Initio կլաստերի բոլոր հանգույցների վրա: Դա պայմանավորված է նրանով, որ մենք միաժամանակ միացանք GreenPlum-ին մեր կլաստերի բոլոր հանգույցներից: Եվ որպեսզի GreenPlum-ից կարդալը լինի զուգահեռ, և յուրաքանչյուր զուգահեռ Ab Initio շարանը կարդա GreenPlum-ի տվյալների իր բաժինը, մենք պետք է տեղադրեինք Ab Initio-ի կողմից հասկանալի կառուցվածքը SQL հարցումների «where» բաժնում:

where ABLOCAL()

և որոշել այս կոնստրուկցիայի արժեքը՝ նշելով պարամետրերի ընթերցումը փոխակերպման տվյալների բազայից

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

, որը կազմում է նման մի բան

mod(sk,10)=3

, այսինքն. դուք պետք է հուշեք GreenPlum-ին բացահայտ զտիչ յուրաքանչյուր բաժանման համար: Այլ տվյալների բազաների համար (Teradata, Oracle), Ab Initio-ն կարող է ավտոմատ կերպով կատարել այս զուգահեռացումը:

Ab Initio կատարողականի համեմատություն Hive-ի և GreenPlum-ի միջև

Sberbank-ը փորձարկում է անցկացրել՝ համեմատելու MDW-ի կողմից ստեղծված գրաֆիկների աշխատանքը Hive-ի և GreenPlum-ի հետ կապված: Փորձի շրջանակներում Hive-ի դեպքում կային 5 հանգույցներ նույն կլաստերի վրա, ինչ Ab Initio-ն, իսկ GreenPlum-ի դեպքում՝ առանձին կլաստերի վրա՝ 4 հանգույց։ Նրանք. Hive-ը որոշ ապարատային առավելություն ուներ GreenPlum-ի նկատմամբ:

Մենք դիտարկեցինք երկու զույգ գրաֆիկներ, որոնք կատարում էին նույն առաջադրանքը՝ թարմացնելով տվյալները Hive-ում և GreenPlum-ում: Միևնույն ժամանակ գործարկվեցին MDW կոնֆիգուրատորի կողմից ստեղծված գրաֆիկները.

  • սկզբնական բեռնվածություն + պատահականորեն ստեղծվող տվյալների հավելյալ բեռնում Hive աղյուսակում
  • սկզբնական բեռնվածություն + պատահականորեն գեներացվող տվյալների աճող բեռը նույն GreenPlum աղյուսակում

Երկու դեպքում էլ (Hive և GreenPlum) նրանք վերբեռնում էին 10 զուգահեռ շղթաներ նույն Ab Initio կլաստերի վրա: Ab Initio-ն պահպանեց միջանկյալ տվյալները HDFS-ում հաշվարկների համար (Ab Initio-ի առումով, MFS-ի դասավորությունը HDFS-ով օգտագործվեց): Պատահականորեն ստեղծված տվյալների մեկ տողը երկու դեպքում էլ զբաղեցնում էր 200 բայթ:

Արդյունքը այսպիսին էր.

Փեթակ:

Նախնական բեռնում Hive-ում

Տողերը տեղադրվեցին
6 000 000
60 000 000
600 000 000

Նախնականացման տևողությունը
ներբեռնումներ վայրկյանների ընթացքում
41
203
1 601

Աճող բեռնում Փեթակում

Հասանելի տողերի քանակը
թիրախային աղյուսակը փորձի սկզբում
6 000 000
60 000 000
600 000 000

Դելտա գծերի թիվը, որոնց վրա կիրառվում է
փորձարկման ընթացքում թիրախային աղյուսակը
6 000 000
6 000 000
6 000 000

Տևողությունը աճող
ներբեռնումներ վայրկյանների ընթացքում
88
299
2 541

GreenPlum:

Նախնական բեռնում GreenPlum-ում

Տողերը տեղադրվեցին
6 000 000
60 000 000
600 000 000

Նախնականացման տևողությունը
ներբեռնումներ վայրկյանների ընթացքում
72
360
3 631

Աճող բեռնում GreenPlum-ում

Հասանելի տողերի քանակը
թիրախային աղյուսակը փորձի սկզբում
6 000 000
60 000 000
600 000 000

Դելտա գծերի թիվը, որոնց վրա կիրառվում է
փորձարկման ընթացքում թիրախային աղյուսակը
6 000 000
6 000 000
6 000 000

Տևողությունը աճող
ներբեռնումներ վայրկյանների ընթացքում
159
199
321

Մենք տեսնում ենք, որ սկզբնական բեռնման արագությունը ինչպես Hive-ում, այնպես էլ GreenPlum-ում գծայինորեն կախված է տվյալների քանակից և, ավելի լավ սարքավորման նկատառումներով, այն մի փոքր ավելի արագ է Hive-ի համար, քան GreenPlum-ի համար:

Hive-ում աճող բեռնումը նույնպես գծայինորեն կախված է թիրախային աղյուսակում առկա նախկինում բեռնված տվյալների ծավալից և ընթանում է բավականին դանդաղ, քանի որ ծավալը մեծանում է: Դա պայմանավորված է թիրախային աղյուսակը ամբողջությամբ վերագրելու անհրաժեշտությամբ: Սա նշանակում է, որ հսկայական աղյուսակների վրա փոքր փոփոխություններ կիրառելը լավ օգտագործման դեպք չէ Hive-ի համար:

GreenPlum-ում աճող բեռնումը թույլ կախված է թիրախային աղյուսակում առկա նախկինում բեռնված տվյալների ծավալից և բավականին արագ է ընթանում: Դա տեղի է ունեցել SQL Joins-ի և GreenPlum ճարտարապետության շնորհիվ, որը թույլ է տալիս ջնջել գործողությունը։

Այսպիսով, GreenPlum-ն ավելացնում է դելտան՝ օգտագործելով delete+insert մեթոդը, սակայն Hive-ը չունի ջնջման կամ թարմացման գործողություններ, ուստի ամբողջ տվյալների զանգվածը ստիպված է եղել ամբողջությամբ վերագրվել աստիճանական թարմացման ժամանակ: Թավով ընդգծված բջիջների համեմատությունն առավել բացահայտ է, քանի որ այն համապատասխանում է ռեսուրսների ինտենսիվ ներբեռնումների օգտագործման ամենատարածված տարբերակին: Մենք տեսնում ենք, որ GreenPlum-ը այս թեստում 8 անգամ հաղթեց Hive-ին:

Աշխատանքային Ab Initio GreenPlum-ի հետ մոտ իրական ժամանակի ռեժիմում

Այս փորձի ընթացքում մենք կփորձարկենք Ab Initio-ի կարողությունը թարմացնել GreenPlum աղյուսակը պատահականորեն ստեղծված տվյալների կտորներով գրեթե իրական ժամանակում: Դիտարկենք GreenPlum աղյուսակը dev42_1_db_usl.TESTING_SUBJ_org_finval, որի հետ մենք կաշխատենք:

Դրա հետ աշխատելու համար մենք կօգտագործենք երեք Ab Initio գրաֆիկներ.

1) Graph Create_test_data.mp – ստեղծում է տվյալների ֆայլեր HDFS-ում՝ 10 տողերով 6 զուգահեռ թելերով: Տվյալները պատահական են, դրանց կառուցվածքը կազմակերպված է մեր աղյուսակում տեղադրելու համար

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

2) Graph mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset – MDW-ն ստեղծվել է գրաֆիկ՝ նախաստորագրելով տվյալների ներդիրը մեր աղյուսակում 10 զուգահեռ շղթաներով (օգտագործվում են (1) գրաֆիկով ստեղծված թեստային տվյալները)

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

3) Գրաֆիկ mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset – գրաֆիկ, որը ստեղծվել է MDW-ի կողմից՝ 10 զուգահեռ շղթաներով մեր աղյուսակի աստիճանական թարմացման համար՝ օգտագործելով թարմ ստացված տվյալների (դելտա) գեներացված գրաֆիկը (1)

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ

Եկեք գործարկենք ստորև նշված սցենարը NRT ռեժիմում.

  • առաջացնում է 6 թեստային գիծ
  • կատարեք նախնական բեռնվածություն, ներդիր 6 թեստային տող դատարկ աղյուսակում
  • կրկնել աստիճանական ներբեռնումը 5 անգամ
    • առաջացնում է 6 թեստային գիծ
    • կատարել աղյուսակի մեջ 6 թեստային տողերի հավելյալ ներդիր (այս դեպքում, valid_to_ts լրանալու ժամանակը սահմանվում է հին տվյալների վրա, և ավելի թարմ տվյալներ են զետեղվում նույն հիմնական բանալիով)

Այս սցենարը ընդօրինակում է որոշակի բիզնես համակարգի իրական գործունեության ռեժիմը. նոր տվյալների բավականին մեծ մասը հայտնվում է իրական ժամանակում և անմիջապես լցվում GreenPlum-ի մեջ:

Հիմա եկեք տեսնենք սցենարի գրանցամատյանը.

Սկսեք Create_test_data.input.pset-ը 2020-06-04 11:49:11
Ավարտել Create_test_data.input.pset 2020-06-04 11:49:37
Սկսեք mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:49:37
Ավարտել mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:50:42
Սկսեք Create_test_data.input.pset-ը 2020-06-04 11:50:42
Ավարտել Create_test_data.input.pset 2020-06-04 11:51:06
Սկսեք mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:51:06
Ավարտել mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:53:41
Սկսեք Create_test_data.input.pset-ը 2020-06-04 11:53:41
Ավարտել Create_test_data.input.pset 2020-06-04 11:54:04
Սկսեք mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:54:04
Ավարտել mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:56:51
Սկսեք Create_test_data.input.pset-ը 2020-06-04 11:56:51
Ավարտել Create_test_data.input.pset 2020-06-04 11:57:14
Սկսեք mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:57:14
Ավարտել mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 11:59:55
Սկսեք Create_test_data.input.pset-ը 2020-06-04 11:59:55
Ավարտել Create_test_data.input.pset 2020-06-04 12:00:23
Սկսեք mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 12:00:23
Ավարտել mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 12:03:23
Սկսեք Create_test_data.input.pset-ը 2020-06-04 12:03:23
Ավարտել Create_test_data.input.pset 2020-06-04 12:03:49
Սկսեք mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 12:03:49
Ավարտել mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset 2020-06-04 12:06:46

Ստացվում է այս նկարը.

Գծագիր
Սկիզբը `
Ավարտել ժամանակը
Երկարություն

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

Մենք տեսնում ենք, որ 6 հավելյալ գիծ մշակվում է 000 րոպեում, ինչը բավականին արագ է։
Թիրախային աղյուսակի տվյալները բաշխված են հետևյալ կերպ.

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;

Երբ ունես Սբերի կշեռքներ։ Ab Initio-ի օգտագործումը Hive-ի և GreenPlum-ի հետ
Դուք կարող եք տեսնել տեղադրված տվյալների համապատասխանությունը գրաֆիկների գործարկման ժամանակներին:
Սա նշանակում է, որ դուք կարող եք տվյալների աստիճանական բեռնում GreenPlum-ում Ab Initio-ում շատ բարձր հաճախականությամբ և դիտել այս տվյալները GreenPlum-ում տեղադրելու մեծ արագություն: Իհարկե, հնարավոր չի լինի գործարկել վայրկյանը մեկ, քանի որ Ab Initio-ն, ինչպես ցանկացած ETL գործիք, ժամանակ է պահանջում գործարկվելիս «գործարկելու համար»:

Ամփոփում

Ab Initio-ն ներկայումս օգտագործվում է Սբերբանկում՝ միասնական իմաստային տվյալների շերտ (ESS) կառուցելու համար: Այս նախագիծը ներառում է տարբեր բանկային տնտեսվարող սուբյեկտների վիճակի միասնական տարբերակի ստեղծում: Տեղեկությունները գալիս են տարբեր աղբյուրներից, որոնց կրկնօրինակները պատրաստվում են Hadoop-ում։ Ելնելով բիզնեսի կարիքներից՝ պատրաստվում է տվյալների մոդել և նկարագրվում են տվյալների փոխակերպումները: Ab Initio-ն բեռնում է տեղեկատվությունը ESN-ում, և ներբեռնված տվյալները ոչ միայն հետաքրքրում են բիզնեսին, այլ նաև ծառայում են որպես տվյալների ստեղծման աղբյուր: Միևնույն ժամանակ, արտադրանքի ֆունկցիոնալությունը թույլ է տալիս որպես ընդունիչ օգտագործել տարբեր համակարգեր (Hive, Greenplum, Teradata, Oracle), ինչը հնարավորություն է տալիս հեշտությամբ պատրաստել տվյալներ բիզնեսի համար տարբեր ձևաչափերով:

Ab Initio-ի հնարավորությունները լայն են, օրինակ՝ ներառված MDW շրջանակը հնարավորություն է տալիս ստեղծել տեխնիկական և բիզնես պատմական տվյալներ առանց տուփի: Ծրագրավորողների համար Ab Initio-ն հնարավորություն է տալիս ոչ թե նորից հայտնագործել անիվը, այլ օգտագործել բազմաթիվ գոյություն ունեցող ֆունկցիոնալ բաղադրիչներ, որոնք, ըստ էության, գրադարաններ են, որոնք անհրաժեշտ են տվյալների հետ աշխատելիս:

Հեղինակը Sberbank SberProfi DWH/BigData-ի մասնագիտական ​​համայնքի փորձագետ է: SberProfi DWH/BigData մասնագիտական ​​համայնքը պատասխանատու է այնպիսի ոլորտներում կարողությունների զարգացման համար, ինչպիսիք են Hadoop էկոհամակարգը, Teradata, Oracle DB, GreenPlum, ինչպես նաև BI գործիքներ Qlik, SAP BO, Tableau և այլն:

Source: www.habr.com

Добавить комментарий