Avilio pamoka - avilio architektūra ir NASA atvejų analizė

Šis avilio mokymo tinklaraštis suteikia jums išsamių žinių apie avilio architektūrą ir avilio duomenų modelį. Tai taip pat paaiškina NASA „Apache Hive“ atvejo tyrimą.

Apache avilio pamoka: įvadas

„Hive“ yra griežtai visoje pramonėje naudojamas „Big Data Analytics“ įrankis ir puikus įrankis norint pradėti su. Šiame „Hive“ mokymo tinklaraštyje mes išsamiai aptarsime „Apache Hive“. „Apache Hive“ yra duomenų saugojimo įrankis , kuri teikia SQL tipo kalbą užklausoms ir „Big Data“ analizei. „Hive“ kūrimo motyvas yra trintis be trinties SQL kūrėjams ir analitikams. Avilys yra ne tik neprogramuojamų žmonių gelbėtojas, bet ir sumažina programuotojų, kurie ilgas valandas rašo „MapReduce“ programas, darbą. Šiame „Apache Hive Tutorial“ tinklaraštyje kalbėsiu apie:





Apache avilio pamoka: kas yra avilys?

„Apache Hive“ yra duomenų sandėlio sistema, sukurta ant „Hadoop“, ir naudojama analizuojant struktūrizuotus ir pusiau struktūruotus duomenis.Avilys apibendrina „Hadoop MapReduce“ sudėtingumą. Iš esmės tai suteikia struktūrą projektuoti į duomenis ir atlikti HQL („Hive Query Language“) parašytas užklausas, panašias į SQL sakinius. „Hive“ kompiliatorius šias užklausas arba HQL konvertuoja į žemėlapį, kad sumažintų darbo vietų skaičių. Todėl jums nereikia jaudintis rašant sudėtingas „MapReduce“ programas, kad jūsų duomenys būtų apdorojami naudojant „Hadoop“. Jis skirtas tiems vartotojams, kuriems patogu naudotis SQL. „Apache Hive“ palaiko duomenų apibrėžimo kalbą (DDL), duomenų tvarkymo kalbą (DML) ir vartotojo nustatytas funkcijas (UDF).

Avilio pamoka pradedantiesiems | Supratimas apie avilį gilumoje Edureka



SQL + Hadoop MapReduce = HiveQL

Apache avilio pamoka: avilio istorija - nuo „Facebook“ iki „Apache“

„Facebook“ naudojimo atvejis - avilio pamoka - „Edureka“Pav : Avilio pamoka - „Facebook“ naudojimo atvejis

„Facebook“ iššūkiai: eksponentinis duomenų augimas

Iki 2008 m. Visa „Facebook“ duomenų apdorojimo infrastruktūra buvo pastatyta aplink duomenų sandėlį, pagrįstą komercine RDBMS. Šios infrastruktūros buvo pakankamai pajėgios, kad pakaktų to meto „Facebook“ poreikių. Kadangi duomenys pradėjo sparčiai augti, tai tapo didžiuliu iššūkiu valdyti ir apdoroti šį didžiulį duomenų rinkinį. Remiantis „Facebook“ straipsniu, duomenys buvo pakeisti nuo 15 TB duomenų rinkinio 2007 m. Iki 2 PB duomenų 2009 m. Be to, daugelyje „Facebook“ produktų reikia analizuoti tokius duomenis kaip „Audience Insights“, „Facebook“ leksika, „Facebook“ skelbimai ir kt. Taigi, jie reikėjo pritaikomo ir ekonomiško sprendimo, kaip išspręsti šią problemą, todėl pradėjo naudoti „Hadoop“ sistemą.



Demokratizuojantis Hadoopas - „MapReduce“

Tačiau augant duomenims, „Map-Reduce“ kodų sudėtingumas proporcingai augo. Taigi sunku išmokyti žmones, turinčius neprogramavimo pagrindą, rašyti „MapReduce“ programas. Be to, norint atlikti paprastą analizę, reikia parašyti šimtą MapReduce kodo eilučių. Kadangi inžinieriai ir analitikai, įskaitant „Facebook“, SQL buvo plačiai naudojami, todėl SQL uždėjimas ant „Hadoop“ viršaus atrodė logiškas būdas padaryti „Hadoop“ prieinamą vartotojams, turintiems SQL foną.

Vadinasi, SQL gebėjimo pakakti daugumai analitinių reikalavimų ir Hadoopo mastelis padidino Apache avilys tai leidžia atlikti SQL užklausas dėl HDFS esančių duomenų. Vėliau „Hive“ projektą „Facebook“ atidarė 2008 m. Rugpjūčio mėn. Ir šiandien jis laisvai prieinamas kaip „Apache Hive“.

Dabar pažvelkime į avilio ypatybes ar privalumus, dėl kurių jis yra toks populiarus.

Apache avilio pamoka: avilio privalumai

  • Naudinga žmonėms, kurie nėra iš programavimo fono, nes tai nereikalauja rašyti sudėtingos „MapReduce“ programos.
  • Ištraukiamas ir keičiamo dydžio susidoroti su didėjančia duomenų apimtimi ir įvairove, nedarant įtakos sistemos veikimui.
  • Tai kaip efektyvus įrankis ETL (Extract, Transform, Load).
  • „Hive“ palaiko bet kurią kliento programą, parašytą „Java“, PHP, „Python“, „C ++“ arba „Ruby“, atskleisdamas ją Taupumo serveris . (Šias kliento kalbos, įdėtas naudojant SQL, galite naudoti norėdami patekti į duomenų bazę, pvz., DB2 ir kt.).
  • Kadangi avilio metaduomenų informacija yra saugoma RDBMS, tai žymiai sutrumpina semantinių patikrinimų atlikimo laiką vykdant užklausą.

duomenų bazių sujungimas java su mysql

„Apache Hive“ mokymo programa: kur naudoti „Apache Hive“?

„Apache Hive“ naudojasi abiejų pasaulių, t. Y. SQL duomenų bazių sistemos ir sistema. Todėl ja naudojasi didžiulė gausybė įmonių. Dažniausiai jis naudojamas duomenų sandėliavimui, kur galite atlikti analizę ir duomenų gavybą, kurioms nereikia realaus laiko apdorojimo. Kai kurie laukai, kuriuose galite naudoti „Apache Hive“, yra šie:

  • Duomenų saugojimas
  • Ad-hoc analizė

Kaip sakoma, negalima ploti tik viena ranka, t. Y. Negalite išspręsti visų problemų vienu įrankiu. Todėl galite susieti „Hive“ su kitais įrankiais ir naudoti jį daugelyje kitų sričių. Pavyzdžiui, „Tableau“ kartu su „Apache Hive“ gali būti naudojamas duomenų vizualizavimui, „Apache Tez“ integravimas su „Hive“ suteiks jums realaus laiko apdorojimo galimybes ir kt.
Šiame „Apache Hive Tutorial“ tinklaraštyje pažvelkime į NASA atvejo analizę, kurioje sužinosite, kaip „Hive“ išsprendė problemą, su kuria susidūrė NASA mokslininkai, vertindami klimato modelius.

Avilio pamoka: NASA atvejo analizė

Klimato modelis yra matematinis klimato sistemų vaizdavimas, pagrįstas įvairiais veiksniais, darančiais įtaką Žemės klimatui. Iš esmės jis apibūdina įvairių klimato veiksnių, tokių kaip vandenynas, saulė, atmosfera ir kt., Sąveikąpateikti įžvalgą apie klimato sistemos dinamiką. Jis naudojamas projektuojant klimato sąlygas imituojant klimato pokyčius, remiantis veiksniais, turinčiais įtakos klimatui. NASA reaktyvinių variklių laboratorija sukūrė regioninę klimato modelio vertinimo sistemą (RCMES), skirtą analizuoti ir įvertinti klimato rezultatų modelį, palyginti su nuotolinio stebėjimo duomenimis, esančiais įvairiose išorinėse saugyklose.

RCMES (regioninė klimato modelio vertinimo sistema) turi du komponentus:

  • RCMED (regioninio klimato modelio vertinimo duomenų bazė):

Tai yra keičiama debesų duomenų bazė, įkelianti nuotolinio stebėjimo duomenis ir pakartotinės analizės duomenis, susijusius su klimatu, naudojant ištraukiklius, pvz., „Apache OODT“ ištraukėjus, „Apache Tika“ ir kt. Galiausiai, duomenys transformuojami kaip duomenų taško modelis, kuris yra tokios formos (platuma , ilguma, laikas, reikšmė, aukštis) ir išsaugo jį mano SQL duomenų bazėje. Klientas gali gauti RCMED esančius duomenis atlikdamas „Space / Time“ užklausas. Tokių užklausų aprašymas mums dabar nėra aktualus.

  • RCMET (regioninio klimato modelio vertinimo rinkinys):

Tai suteikia vartotojui galimybę palyginti referencinius duomenis, esančius RCMED, su klimato modelio išvesties duomenimis, gautais iš kitų šaltinių, kad būtų galima atlikti įvairias analizes ir vertinimus. Norėdami suprasti RCMES architektūrą, galite kreiptis į toliau pateiktą vaizdą.

RCMED informaciniai duomenys gaunami iš palydovinio nuotolinio stebėjimo pagal skirtingus parametrus, reikalingus klimato modeliui įvertinti. Pvz., „AIRS“ (atmosferos infraraudonųjų spindulių garsiakalbis) pateikia tokius parametrus kaip paviršiaus oro temperatūra, temperatūra ir geopotencialas, „TRMM“ (tropinių kritulių matavimo misija) teikia mėnesinius kritulius ir kt.

Problemos, su kuriomis susiduria NASA naudodamas „MySQL“ duomenų bazių sistemą:

  • Įkėlus „MySQL“ duomenų bazę su 6 milijardais formos rinkinių (platuma, ilguma, laikas, duomenų taško vertė, aukštis), sistema sugedo, kaip parodyta aukščiau esančiame paveikslėlyje.
  • Net padalijusi visą lentelę į mažesnius pogrupius, apdorodama duomenis sistema sugeneravo didžiules pridėtines išlaidas.

Taigi jiems reikėjo pritaikomo sprendimo, kuris galėtų saugoti ir apdoroti šį didžiulį duomenų kiekį naudojant SQL, pvz., Užklausų teikimo galimybes. Galiausiai jie nusprendė naudoti „Apache Hive“ pirmiau nurodytoms problemoms įveikti.

Kaip „Apache Hive“ gali išspręsti problemą?

Pažiūrėkime, kokios yra funkcijos, įtikinančios NASA JPL komandą įtraukti „Apache Hive“ kaip neatsiejamą jų sprendimo strategijos dalį:

  • Kadangi „Apache Hive“ veikia virš „Hadoop“, jis yra keičiamo dydžio ir gali apdoroti duomenis paskirstytu ir lygiagrečiu būdu.
  • Tai teikia „Hive Query“ kalbą, kuri yra panaši į SQL ir todėl lengvai išmokstama.

Avilio diegimas:

Šiame paveikslėlyje RCMES architektas paaiškinamas integravus „Apache Hive“:

Pav : Avilio pamoka - RCMES architektūra su „Apache Hive“

Aukščiau pateiktame paveikslėlyje parodytas apache avilio diegimas RCMES. NASA komanda, vykdydama „Apache Hive“, ėmėsi šių veiksmų:

  • Jie įdiegė „Hive“ naudodami „Cloudera“ ir „Apache Hadoop“, kaip parodyta aukščiau esančiame paveikslėlyje.
  • Jie naudojo „Apache Sqoop“, kad į „Hive“ įrašytų duomenis iš „MySQL“ duomenų bazės.
  • Apache OODT pakuotė buvo įgyvendinta, kad būtų galima atlikti „Hive“ užklausas ir atgauti duomenis atgal į RCMET.

Pradinės analizės su aviliu analizės:

  • Iš pradžių jie įkėlė 2,5 milijardo duomenų taškų į vieną lentelę ir atliko skaičiavimo užklausą. Pavyzdžiui, Avilys> pasirinkite „dataPoint“ skaičių (datapoint_id). Visiems rekordams suskaičiuoti prireikė 5–6 minučių (15–17 minučių už visus 6,8 mlrd. Įrašų).
  • Sumažinimo fazė buvo greita, tačiau žemėlapio fazė užtruko 95% viso apdorojimo laiko. Jie naudojo šešis ( 4x keturių branduolių ) sistemos su 24 GB RAM (apytiksliai) kiekvienoje sistemoje.
  • Net pridėjus daugiau mašinų, pakeitus HDFS bloko dydį (64 MB, 128 MB, 256 MB) ir pakeitus daugelį kitų konfigūracijos kintamųjų (io.rūšiuoti.faktorius, t.rūšiuoti.mb), jie nesulaukė didelio pasisekimo sutrumpinę laiką iki skaičiavimo pabaigos.

Avilio bendruomenės narių indėlis:

Galiausiai, avilio bendruomenės nariai atėjo į pagalbą ir pateikė įvairių įžvalgų, kad išspręstų problemas, susijusias su dabartiniais avilio diegimo būdais:

  • Jie minėjo, kad HDFS skaitymo greitis yra apytiksliai 60 MB / s palyginti su 1 GB / s vietinio disko atveju, atsižvelgiant į tinklo talpą ir „NameNode“ darbo krūvį.
  • Nariai tai pasiūlė 16 kartografų jų dabartinėje sistemoje bus reikalaujama, kad jie atitiktų vietinės ne „Hadoop“ užduoties įvesties / išvesties funkciją.
  • Jie taip pat pasiūlė sumažinti padalintas dydis kiekvienam žemėlapininkui padidinti skaičiųapiežemėlapių ir todėl teikia daugiau paralelizmo.
  • Galiausiai bendruomenės nariai jiems liepė naudoti skaičius (1) užuot nurodžius suskaičiuoti ( datapoint_id) . Taip yra todėl, kad skaičiavimo (1) atveju nėra pamatinio stulpelio, todėl atliekant skaičiavimą dekompresija ir deserializacija nevyksta.

Galiausiai NASA galėjo pritaikyti savo avilio grupę pagal jų lūkesčius, atsižvelgdama į visus avilio bendruomenės narių pateiktus pasiūlymus. Todėl jie galėjo pateikti milijardų eilučių užklausą tik per 15 sekundžių naudodami aukščiau paminėtas sistemos konfigūracijas.

Apache avilio pamoka: avilio architektūra ir jos komponentai

Šiame paveikslėlyje aprašoma avilio architektūra ir srautas, į kurį pateikiama užklausaAvilysir galiausiai apdorota naudojant „MapReduce“ sistemą:

Pav : Avilio pamoka - avilio architektūra

Kaip parodyta aukščiau esančiame paveikslėlyje, avilio architektūrą galima suskirstyti į šiuos komponentus:

  • Avilio klientai: „Hive“ palaiko programą, parašytą daugeliu kalbų, pvz., „Java“, „C ++“, „Python“ ir kt., Naudojant JDBC, „Thrift“ ir „ODBC“ tvarkykles. Taigi visada galima rašyti avilio kliento paraišką, parašytą pasirinkta kalba.
  • Avilio paslaugos: „Apache Hive“ teikia įvairias paslaugas, tokias kaip CLI, interneto sąsaja ir kt., Kad būtų galima atlikti užklausas. Netrukus ištirsime kiekvieną iš jų šiame „Hive“ mokymo tinklaraštyje.
  • Apdorojimo sistema ir išteklių valdymas: Viduje„Hive“ naudoja „Hadoop MapReduce“ sistemą kaip de facto variklį, kad įvykdytų užklausas. yra savaime atskira tema, todėl čia nėra aptarinėjama.
  • Paskirstyta saugykla: Kadangi „Hive“ yra įdiegtas „Hadoop“ viršuje, paskirstytajai saugyklai jis naudoja pagrindinį HDFS. Galite kreiptis į HDFS tinklaraštis sužinoti daugiau apie tai.

Dabar panagrinėkime pirmuosius du pagrindinius avilio architektūros komponentus:

1. Avilio klientai:

„Apache Hive“ palaiko įvairių tipų kliento programas atliekant užklausas avilyje. Šiuos klientus galima suskirstyti į tris tipus:

  • Taupumo klientai: Kadangi „Hive“ serveris yra pagrįstas „Apache Thrift“, jis gali pateikti užklausą iš visų tų programavimo kalbų, kurios palaiko „Thrift“.
  • JDBC klientai: „Hive“ leidžia „Java“ programoms prisijungti prie jo naudojant JDBC tvarkyklę, apibrėžtą klasės org.apache.hadoopas.avilys.jdbc.„HiveDriver“.
  • ODBC klientai: „Hive ODBC“ tvarkyklė leidžia programoms, palaikančioms ODBC protokolą, prisijungti prie „Hive“. (Kaip ir JDBC tvarkyklė, ODBC tvarkyklė naudoja „Thrift“, kad galėtų bendrauti su „Hive“ serveriu.)

2. Avilio paslaugos:

Avilys teikia daug paslaugų, kaip parodyta aukščiau esančiame paveikslėlyje. Pažvelkime į kiekvieną iš jų:

  • „Hive CLI“ (komandinės eilutės sąsaja): Tai yra numatytasis „Hive“ apvalkalas, kuriame galite tiesiogiai vykdyti „Hive“ užklausas ir komandas.
  • „Apache Hive“ interneto sąsajos: Be komandinės eilutės sąsajos, „Hive“ taip pat pateikia žiniatinklio GUI, kad būtų galima vykdyti „Hive“ užklausas ir komandas.
  • Avilio serveris: „Hive“ serveris sukurtas naudojant „Apache Thrift“, todėl jis taip pat vadinamas „Thrift Server“, leidžiančiu skirtingiems klientams pateikti užklausas „Hive“ ir atgauti galutinį rezultatą.
  • „Apache Hive“ tvarkyklė: Ji yra atsakinga už tai, kad klientas gautų užklausas, pateiktas per CLI, žiniatinklio vartotojo sąsają, „Thrift“, „ODBC“ arba „JDBC“ sąsajas. Tada tvarkyklė perduoda užklausą kompiliatoriui, kur atliekamas analizavimas, tipo tikrinimas ir semantinė analizė, naudojant metastore esančią schemą.. Kitame etape sukuriamas optimizuotas loginis planas DAG („Directed Acyclic Graph“) pavidalu, kuriame pateikiamos užduotys, mažinančios žemėlapį, ir HDFS užduotys. Galiausiai vykdymo variklis šias užduotis vykdo priklausomybės tvarka, naudodamas Hadoop.
  • „Metastore“: Galite galvoti apie metastorekaip centrinė visos avilio metaduomenų informacijos saugykla. Avilio metaduomenys apima įvairią informaciją, pvz., Lentelių struktūrą ir skaidiniuskartu su stulpeliu, stulpelio tipu, serializatoriumi ir deserializatoriumi, kurie reikalingi HDFS esančių duomenų skaitymo / rašymo operacijai. Metastoresudaro du pagrindiniai vienetai:
    • Metastore teikianti paslaugaprieiga prie kitųrAvilio paslaugos.
    • Diskų saugojimas metaduomenims, kurie yra atskirti nuo HDFS saugyklos.

Dabar supraskime skirtingus „Hive“ metastore įdiegimo būduskitame šios avilio pamokos skyriuje.

„Apache Hive“ mokymo programa: „Metastore“ konfigūracija

„Metastore“ saugo metaduomenų informaciją naudodama RDBMS ir atvirojo kodo ORM (Object Relational Model) sluoksnį, vadinamą „Data Nucleus“, kuris paverčia objekto atvaizdavimą reliacine schema ir atvirkščiai. Priežastis, kodėl vietoj HDFS pasirinkta RDBMS, yra mažas vėlavimas. Mes galime įdiegti metastore pagal šias tris konfigūracijas:

1. Įterptoji metastvarka:

Tiek metastore, tiek „Hive“ paslauga pagal numatytuosius nustatymus veikia tame pačiame JVM, naudojant įterptąją „Derby Database“ egzempliorių, kuriame metaduomenys saugomi vietiniame diske. Tai vadinama įterptųjų metastandžių konfigūracija. Tokiu atveju prie metastore duomenų bazės vienu metu gali prisijungti tik vienas vartotojas. Jei paleisite antrą „Hive“ tvarkyklės egzempliorių, gausite klaidą. Tai tinka vienetams išbandyti, bet ne praktiniams sprendimams.

2. Vietinis metastvaržas:

Ši konfigūracija leidžia mums turėti keletą „Hive“ seansų, t. Y. Keli vartotojai gali tuo pačiu metu naudotis metastore duomenų baze. Tai pasiekiama naudojant bet kokią su JDBC suderinamą duomenų bazę, pvz., „MySQL“, kuri veikia atskirame JVM arba kitoje mašinoje, nei „Hive“ ir „metastore“ paslaugos, veikiančios tame pačiame JVM, kaip parodyta aukščiau. Apskritai populiariausias pasirinkimas yra įdiegti MySQL serverį kaip metastore duomenų bazę.

3. Nuotolinė metastvarka:

Nuotolinio metastorio konfigūracijoje metastore tarnyba veikia atskirai, o ne „Hive“ tarnyba - JVM. Kiti procesai bendrauja su metastore serveriu naudodami „Thrift Network“ API. Šiuo atveju galite turėti vieną ar daugiau metastore serverių, kad galėtumėte daugiau naudotis.Pagrindinis nuotolinio metastore naudojimo pranašumas yra tas, kad jums nereikia dalintis JDBC prisijungimo duomenimis su kiekvienu „Hive“ vartotoju, kad galėtumėte pasiekti metastore duomenų bazę.

„Apache Hive“ mokymo programa: duomenų modelis

Duomenis avilyje galima suskirstyti į tris tipus:

  • Lentelė
  • Padalijimas
  • Kibiras

Lentelės:

„Hive“ lentelės yra tokios pačios kaip „Reliacinės“ duomenų bazės lentelės. Juose galite atlikti filtravimo, projektavimo, prisijungimo ir sujungimo operacijas. „Hive“ yra dviejų tipų lentelės:

rūšiuoti c ++

1. Valdoma lentelė:

Komanda:

CREATE TABLE (1 stulpelis, duomenų_tipas, 2 stulpelis, duomenų_tipas)

ĮKELTI DUOMENŲ ĮĖJIMĄ į lentelę valdomas_tabelis

Kaip rodo pavadinimas (valdoma lentelė), „Hive“ yra atsakingas už valdomos lentelės duomenų valdymą. Kitaip tariant, tai, ką norėjau pasakyti sakydamas „avilys tvarko duomenis“, yra tai, kad jei įkeliate duomenis iš failo, esančio HDFS, į avilį Valdoma lentelė ir išduoti komandą DROP, lentelė kartu su jos metaduomenimis bus ištrinta. Taigi, duomenys, priklausantys krito valdomas_tabelis nebėra HDFS niekur ir jūs negalite jo jokiu būdu gauti. Iš esmės, duomenis perkeliate išduodami komandą LOAD iš HDFS failo vietos į „Hive“ sandėlio katalogą.

Pastaba: Numatytasis sandėlio katalogo kelias yra / user / avilys / sandėlis. „Hive“ lentelės duomenys yra saugyklos kataloge / lentelės_vardas (HDFS). Sandėlio katalogo kelią taip pat galite nurodyti „hive.metastore.warehouse.dir“ konfigūracijos parametre, esančiame „hive-site.xml“.

2. Išorinė lentelė:

Komanda:

SUKURTI IŠORIN T LENTEL ((1 stulpelio duomenų_tipas, 2 stulpelio duomenų_tipo tipas) LOCATION

Į KROVINĮ DUOMENŲ ĮVADĄ ’’ Į LENTEL.

Dėl išorinis stalas , Avilys nėra atsakingas už duomenų valdymą. Tokiu atveju, kai išleidžiate komandą LOAD, „Hive“ perkelia duomenis į savo sandėlio katalogą. Tada „Hive“ sukuria išorinės lentelės metaduomenų informaciją. Dabar, jei duosite komandą DROP išorinis stalas , bus ištrinta tik metaduomenų informacija apie išorinę lentelę. Todėl vis tiek galite susigrąžinti tos pačios išorinės lentelės duomenis iš sandėlio katalogo naudodami HDFS komandas.

Pertvaros:

Komanda:

CREATE TABLE lentelės_vardas (1 stulpelio duomenų_tipas, 2 stulpelio duomenų_tipas) PASKIRSTYTA (1 skirsnio duomenų_tipas, 2-ojo skirsnio duomenų_tipas ir hellip.)

„Hive“ suskirsto lenteles į skaidinius, kad sugrupuotų panašaus tipo duomenis pagal stulpelį arba skaidinio raktą. Kiekviena lentelė gali turėti vieną ar daugiau skaidinių raktų tam tikram skaidiniui identifikuoti. Tai leidžia mums greičiau pateikti užklausą dėl duomenų dalių.

Pastaba: Atminkite, kad dažniausiai daroma klaida kuriant skaidinius yra esamo stulpelio pavadinimo nurodymas kaip skaidinio stulpelio. Tai darydami gausite klaidą - „Klaida semantinėje analizėje: stulpelis pakartotas skaidant stulpelius“.

Supraskime skaidymą paimdami pavyzdį, kur aš turiu lentelę studentų duomenys, kuriuose pateikiama kai kurių inžinerinių kolegijų studentų informacija, pvz., Studento ID, vardas, katedra, metai ir kt. Dabar, jei skaidymą atlieku pagal katedros stulpelį, visų studentų informacija priklausantys tam tikram skyriui, bus saugomi kartu tame pačiame skaidinyje. Fiziškai skaidinys yra ne kas kita, o pakatalogis lentelės kataloge.

Tarkime, kad mūsų studentų detalių lentelėje turime duomenis apie tris skyrius - CSE, ECE ir Civil. Todėl kiekvienam iš skyrių iš viso turėsime tris pertvaras, kaip parodyta žemiau esančiame paveikslėlyje. Kiekvieno skyriaus atveju turėsime visus duomenis apie tą patį skyrių, esantį atskirame pakatalogyje, esančiame „Hive“ lentelės kataloge. Pvz., Visi studentų duomenys apie TPV skyrius bus saugomi vartotojo / avilio / sandėlio / studento detalių / departamento = PMP. Taigi užklausoms dėl TPP studentų tereikės peržiūrėti duomenis, esančius TPP skaidinyje. Tai padaro skaidymą labai naudingu, nes sumažina užklausos delsą tik nuskaitydamas Aktualus suskirstyti duomenys vietoj viso duomenų rinkinio. Tiesą sakant, realiame pasaulyje įgyvendinsite šimtus TB duomenų. Taigi, įsivaizduokite, kur nuskaitysite šį didžiulį duomenų kiekį tam tikrai užklausai 95% jūsų nuskaityti duomenys nebuvo susiję su jūsų užklausa.

Aš jums siūlyčiau perskaityti tinklaraštį Avilio komandos kur rasite įvairių skaidinių diegimo būdų su pavyzdžiu.

kaip sustabdyti Java programą

Kaušai:

Komandos:

CREATE TABLE table_name PARTITIONED BY (partition1 data_type, partition2 data_type, & hellip.) CLUSTERED BY (column_name1, column_name2,…) RŪŠIUOTI (column_name [ASC | DESC],…)] Į skaičių rinkinių KUOKAS

Dabar galite padalinti kiekvieną skaidinį arba nepaskirstytą lentelę į grupes, atsižvelgdami į lentelės stulpelio maišos funkciją. Tiesą sakant, kiekvienas segmentas yra tik failas skaidinių kataloge arba lentelių kataloge (neskaidyta lentelė). Todėl, jei nusprendėte skaidyti skaidinius į n grupes, kiekviename skaidinio kataloge turėsite n failą. Pavyzdžiui, galite pamatyti aukščiau esantį vaizdą, kuriame kiekvieną skaidinį suskirstėme į 2 grupes. Taigi, kiekvienas skaidinys, tarkim, TPP, turės du failus, kuriuose kiekviename bus saugomi TPV studento duomenys.

Kaip avilys paskirsto eilutes į kibirus?

Na, avilys nustato eilutės segmento numerį naudodamas formulę: maišos_funkcija (kaupimo_kolonas) modulis (kibirų_ skaičius) . Čia, hash_function priklauso nuo stulpelio duomenų tipo. Pvz., Jei jūs kaupiate lentelę pagal kokį nors INT duomenų tipo stulpelį, tarkime, vartotojo_ID, hash_function bus - hash_function (vartotojo_id ) = sveika vartotojo_id reikšmė . Tarkime, kad sukūrėte du segmentus, tada avilys nustatys eilutes, einančias į 1 segmentą kiekviename skaidinyje, apskaičiuodamas: (vartotojo_id reikšmė) modulo (2). Todėl šiuo atveju eilutės, kurių user_id baigiasi lygiu sveikojo skaičiaus skaičiumi, bus tame pačiame segmente, kuris atitinka kiekvieną skaidinį. Kitų duomenų tipų maišos_funkcija yra šiek tiek sudėtinga apskaičiuoti ir, tiesą sakant, eilutėje ji net nėra žmogaus atpažįstama.

Pastaba: Jei naudojate „Apache Hive 0.x“ arba „1.x“, prieš atlikdami kaupimą, turite išduoti komandą - nustatykite „hive.enforce.bucketing = true“ iš savo „Hive“ terminalo. Tai leis jums turėti teisingą reduktoriaus skaičių, kai naudojate grupę pagal sąlygą stulpelio kaupimui. Jei to nepadarėte, lentelių kataloge sugeneruotų failų skaičius nėra lygus grupių skaičiui. Taip pat galite nustatyti reduktoriaus skaičių, lygų kibirų skaičiui, naudodami rinkinį mapred.reduce.task = num_bucket.

Kodėl mums reikia kibirų?

Yra dvi pagrindinės grupės pertvarkymo į skaidinį priežastys:

  • Į prisijungti prie žemėlapio pusės reikalauja, kad unikaliame prisijungimo rakte esantys duomenys būtų toje pačioje skaidinyje. Bet ką daryti tais atvejais, kai jūsų skaidinio raktas skiriasi nuo prisijungimo? Todėl šiais atvejais galite atlikti žemėlapio šoninį sujungimą, lentelę sugrupuodami naudodamiesi prisijungimo klavišu.
  • Grupė daro atrankos procesą efektyvesnį, todėl leidžia mums sumažinti užklausos laiką.

Norėčiau užbaigti šį „Hive“ mokymo tinklaraštį čia. Esu tikras, kad, perėjęs šį „Hive“ mokymo tinklaraštį, būtum supratęs „Apache Hive“ paprastumą. Nuo to laiko jūs, vaikinai, išmokote visus avilio pagrindus, pats laikas pasinaudoti „Apache Hive“ patirtimi. Taigi, patikrinkite kitą šios „Hive Tutorial“ tinklaraščių serijos tinklaraštį, kuriame yra „Hive“ diegimas, ir pradėkite dirbti su „Apache Hive“.

Dabar, kai supratote „Apache Hive“ ir jo funkcijas, patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. „Edureka Big Data Hadoop“ sertifikavimo mokymo kursas padeda besimokantiesiems tapti HDFS, verpalų, „MapReduce“, „Pig“, „Hive“, „HBase“, „Oozie“, „Flume“ ir „Sqoop“ ekspertais, naudojant realaus laiko naudojimo atvejus mažmeninės prekybos, socialinės žiniasklaidos, aviacijos, turizmo, finansų srityse.

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.