Tarude õpetus - taruarhitektuur ja NASA juhtumianalüüs

See taru õpetusblogi annab teile põhjalikud teadmised taru arhitektuurist ja taru andmemudelist. See selgitab ka NASA juhtumi uuringut Apache Hive'i kohta.

Apache Hive'i õpetus: sissejuhatus

Hive on rangelt kogu tööstuses kasutatav tööriist Big Data Analyticsi jaoks ja suurepärane tööriist selle käivitamiseks koos. Selles taru õpetuse ajaveebis arutame Apache Hive'i kohta põhjalikult. Apache Hive on andmehoidla tööriist , mis pakub SQL-i sarnast keelt Big Data päringute tegemiseks ja analüüsimiseks. Taru väljatöötamise motivatsioon on SQL-i arendajate ja analüütikute hõõrdumiseta õppimise tee. Taru pole mitte ainult programmeerimata taustaga inimeste päästja, vaid vähendab ka programmeerijate tööd, kes veedavad pikki tunde MapReduce programmide kirjutamisel. Selles Apache Hive'i õpetuse ajaveebis räägin:





Apache Hive'i õpetus: mis on taru?

Apache Hive on Hadoopi peale ehitatud andmelao süsteem, mida kasutatakse struktureeritud ja poolstruktureeritud andmete analüüsimiseks.Tarus tehakse Hadoop MapReduce keerukus. Põhimõtteliselt pakub see mehhanismi andmetele struktuuri projitseerimiseks ja HQL-s (Hive Query Language) kirjutatud päringute tegemiseks, mis on sarnased SQL-i lausetega. Sisemiselt konverteeritakse need päringud või HQL kaardiks, vähendades töökohti Hive'i kompilaatori poolt. Seetõttu ei pea te muretsema keerukate MapReduce programmide kirjutamise pärast, et teie andmeid Hadoopi abil töödelda. See on suunatud kasutajatele, kellele SQL on mugav. Apache Hive toetab andmemääratluse keelt (DDL), andmetöötluskeelt (DML) ja kasutaja määratud funktsioone (UDF).

Tarude õpetus algajatele | Taru mõistmine sügavuses | Edureka



SQL + Hadoop MapReduce = HiveQL

Apache Hive'i õpetus: Taru lugu - Facebookist Apache'ini

Facebooki kasutamise juhtum - tarude õpetus - EdurekaJoon : Tarude õpetus - Facebooki kasutamise juhtum

Väljakutsed Facebookis: andmete eksponentsiaalne kasv

Enne 2008. aastat ehitati kogu Facebooki andmetöötluse infrastruktuur kaubanduslikul RDBMS-il põhineva andmeladu ümber. Need infrastruktuurid olid piisavalt võimelised, et piisata sel ajal Facebooki vajadustest. Kuid kuna andmed hakkasid väga kiiresti kasvama, sai selle tohutu andmekogumi haldamine ja töötlemine tohutuks väljakutseks. Vastavalt Facebooki artiklile on andmed skaleeritud 2007. aasta 15 TB-st 2 PB-ga 2009. aastal. Samuti hõlmavad paljud Facebooki tooted selliste andmete analüüsi nagu Publiku statistika, Facebooki leksikon, Facebooki reklaamid jne. vajas selle probleemiga toimetulemiseks skaleeritavat ja ökonoomset lahendust ning hakkas seetõttu kasutama Hadoopi raamistikku.



Demokraatlik Hadoop - MapReduce

Kuid andmete kasvades kasvas Map-Reduce koodide keerukus proportsionaalselt. Niisiis muutus programmeerimata taustaga inimeste koolitamine MapReduce programmide kirjutamiseks keeruliseks. Samuti tuleb lihtsa analüüsi tegemiseks kirjutada sada rida MapReduce koodi. Kuna insenerid ja analüütikud, sealhulgas Facebook, kasutasid SQL-i laialdaselt, tundus SQL-i Hadoopi tippu panemine loogiline viis muuta Hadoop kättesaadavaks SQL-taustaga kasutajatele.

Seega sünnitas SQLi võime piisada enamiku analüütiliste nõuete täitmiseks ja Hadoopi mastaapsus Apache taru mis võimaldab HDFS-is olevate andmete puhul SQL-i abil päringuid teha. Hiljem avas Hive projekti 2008. aasta augustis Facebook ja see on täna vabalt saadaval Apache Hive nime all.

Vaatame nüüd Hive'i funktsioone või eeliseid, mis muudab selle nii populaarseks.

Apache taru õpetus: taru eelised

  • Kasulik inimestele, kes pole pärit programmeerimisetaustast, kuna see välistab vajaduse kirjutada keeruline MapReduce programm.
  • Pikendatav ja skaleeritav tulla toime kasvava andmemahu ja mitmekesisusega, ilma et see mõjutaks süsteemi jõudlust.
  • See on tõhus ETL (ekstrakt, teisendus, laadimine) tööriist.
  • Hive toetab kõiki Java-, PHP-, Pythoni, C ++ või Ruby-vormingus kirjutatud klientrakendusi, paljastades selle Säästuserver . (Neid SQL-i sisseehitatud kliendipoolseid keeli saate kasutada andmebaasi nagu DB2 jms kasutamiseks).
  • Kuna Hive'i metaandmete teave on salvestatud RDBMS-i, vähendab see märkimisväärselt semantiliste kontrollide teostamise aega päringu täitmise ajal.

Apache Hive'i õpetus: kus Apache Hive'i kasutada?

Apache Hive kasutab ära mõlemad maailmad, st SQL-i andmebaasisüsteem ja raamistik. Seetõttu kasutab seda tohutu hulk ettevõtteid. Seda kasutatakse enamasti andmeladustamiseks, kus saate teha analüüsi ja andmete kaevandamist, mis ei vaja reaalajas töötlemist. Mõned väljad, kus saate Apache Hive'i kasutada, on järgmised:

  • Andmete ladustamine
  • Ad-hoc analüüs

Nagu öeldud, ei saa te ainult ühe käega plaksutada, st te ei saa kõiki probleeme ühe tööriistaga lahendada. Seetõttu saate taru siduda teiste tööriistadega, et seda paljudes teistes domeenides kasutada. Näiteks saab Tableau koos Apache Hive'iga kasutada andmete visualiseerimiseks, Apache Tezi integreerimine Hive'iga pakub reaalajas töötlemise võimalusi jne.
Selles Apache Hive'i õpetuse ajaveebis edasi liikudes vaatame NASA juhtumiuuringut, kus saate teada, kuidas Hive lahendas probleemi, millega NASA teadlased kliimamudelite hindamise ajal silmitsi seisid.

Taru õpetus: NASA juhtumianalüüs

Kliimamudel on kliimasüsteemide matemaatiline esitus, mis põhineb erinevatel teguritel, mis mõjutavad Maa kliimat. Põhimõtteliselt kirjeldab see erinevate kliimamuutuste, näiteks ookeani, päikese, atmosfääri jms vastastikust mõjuannab ülevaate kliimasüsteemi dünaamikast. Seda kasutatakse kliimatingimuste prognoosimiseks, simuleerides kliimamuutusi kliimat mõjutavate tegurite põhjal. NASA reaktiivmootorite labor on välja töötanud piirkondliku kliimamudeli hindamissüsteemi (RCMES) kliimaväljundi mudeli analüüsimiseks ja hindamiseks erinevates välishoidlates leiduvate kaugseire andmete põhjal.

RCMES-il (piirkondlik kliimamudeli hindamissüsteem) on kaks komponenti:

  • RCMED (piirkondliku kliimamudeli hindamise andmebaas):

See on skaleeritav pilvandmebaas, mis laadib kliimaga seotud kaugseire andmed ja reanalüüsi andmed, kasutades ekstraktoreid, näiteks Apache OODT ekstraktoreid, Apache Tika jne. Lõpuks teisendab see andmed andmepunkti mudelina, mis on kujul (laiuskraad , pikkuskraad, aeg, väärtus, kõrgus) ja salvestab selle minu SQL-i andmebaasi. Klient saab RCMED-is olevaid andmeid hankida, täites ruumi / aja päringuid. Selliste päringute kirjeldus pole meie jaoks praegu asjakohane.

  • RCMET (piirkondliku kliimamudeli hindamise tööriistakomplekt):

See annab kasutajale võimaluse võrrelda RCMED-is sisalduvaid võrdlusandmeid mõnest muust allikast hangitud kliimamudeli väljundandmetega, et teha erinevaid analüüse ja hindamisi. RCMES-i arhitektuuri mõistmiseks võite viidata allpool toodud pildile.

RCMED-i võrdlusandmed pärinevad satelliidipõhisest kaugseirest vastavalt kliimamudeli hindamiseks vajalikele erinevatele parameetritele. Näiteks - AIRS (Atmospheric Infrared Sounder) pakub selliseid parameetreid nagu pinna õhutemperatuur, temperatuur ja geopotentsiaal, TRMM (troopiliste sademete mõõtmise missioon) annab igakuiseid sademeid jne.

NASA probleemid MySQL andmebaasisüsteemi kasutamisel:

  • Pärast MySQL-i andmebaasi 6 miljardi vormiribaga (laiuskraad, pikkuskraad, aeg, andmepunkti väärtus, kõrgus) laadimist kukkus süsteem kokku nagu ülaltoodud pildil näidatud.
  • Isegi pärast kogu tabeli jagamist väiksemateks alamhulkadeks tekitas süsteem andmete töötlemisel tohutuid üldkulusid.

Niisiis, nad vajasid skaleeritavat lahendust, mis suudaks seda tohutut andmemahtu SQL-i abil salvestada ja töödelda nagu päringuvõimalused. Lõpuks otsustasid nad eespool nimetatud probleemidest ülesaamiseks kasutada Apache Hive'i.

Kuidas Apache Hive saab probleemi lahendada?

Vaatame nüüd, millised on need funktsioonid, mis veensid NASA JPL-i meeskonda kaasama Apache Hive lahutamatu osana oma lahenduste strateegiasse:

  • Kuna Apache Hive töötab Hadoopi peal, on see skaleeritav ja suudab andmeid töödelda hajutatult ja paralleelselt.
  • See pakub tarude päringukeelt, mis sarnaneb SQL-iga ja on seetõttu hõlpsasti õpitav.

Taru juurutamine:

Järgmine pilt selgitab RCMES-i arhitekti Apache Hive'i integreerimisega:

Joon : Taru õpetus - RCMESi arhitektuur koos Apache Hive'iga

Ülaltoodud pilt näitab apache'i taru juurutamist RCMES-is. NASA meeskond tegi Apache Hive'i juurutamisel järgmised sammud:

  • Nad installisid Hive'i Cloudera ja Apache Hadoop abil, nagu ülaltoodud pildil näidatud.
  • Nad kasutasid Apache Sqoopi, et sisestada MySQL-i andmebaasist andmeid tarusse.
  • Apache OODT ümbris rakendati Hive'is päringute tegemiseks ja andmete RCMET-i tagasi toomiseks.

Esimesed tähelepanekud taruga:

  • Esialgu laadisid nad ühte tabelisse 2,5 miljardit andmepunkti ja tegid loenduspäringu. Näiteks, Taru> valige dataPointi arv (datapoint_id). Kõigi rekordite kokku lugemine võttis aega 5-6 minutit (kogu 6,8 miljardi plaadi jaoks 15–17 minutit).
  • Reduktsioonifaas oli kiire, kuid kaardifaas võttis 95% kogu töötlemisajast. Nad kasutasid kuut ( 4x neljatuumaline ) süsteemid 24 GB RAM (umbes) igas süsteemis.
  • Isegi pärast uute masinate lisamist, HDFS-i ploki suuruse (64 MB, 128 MB, 256 MB) ja paljude teiste konfiguratsioonimuutujate muutmist (io.sorteerida.tegur, st.sorteerida.mb), ei saanud nad loendamise lõpuleviimise aja vähendamisel palju edu.

Tarude kogukonna liikmete sisendid:

Lõpuks tulid taru kogukonna liikmed appi ja pakkusid mitmesuguseid teadmisi probleemide lahendamiseks oma praeguse taru rakendustega:

  • Nad mainisid, et HDFS-i lugemiskiirus on ligikaudu 60 MB / s võrreldes 1 GB / s kohaliku plaadi korral, sõltuvalt võrgu võimsusest ja NameNode'i töökoormusest.
  • Liikmed soovitasid seda 16 kaardistajat on nende praeguses süsteemis nõutavad, et need vastaksid kohaliku mitte-Hadoopi ülesande sisend- / väljundfunktsioonidele.
  • Samuti soovitasid nad vähendada split-size iga kaardistaja jaoks arvu suurendamisekskohtakaardistajad ja pakkudes seetõttu paralleelsust.
  • Lõpuks käskisid kogukonna liikmed seda teha kasuta loendit (1) viitamise asemel loendama ( datapoint_id) . Seda seetõttu, et loenduse (1) korral puudub võrdlusveerg ja seetõttu ei toimu loendamise ajal dekompressiooni ja deserialiseerimist.

Lõpuks suutis NASA oma taru klastri oma ootustele vastavaks häälestada, võttes arvesse kõiki taru kogukonna liikmete ettepanekuid. Seetõttu suutsid nad ülalnimetatud süsteemikonfiguratsioonide abil vaid 15 sekundiga päringuid teha miljardites ridades.

Apache taru õpetus: taruarhitektuur ja selle komponendid

Järgmine pilt kirjeldab taru arhitektuuri ja voogu, kuhu päring esitatakseTaruja lõpuks töödeldi MapReduce raamistiku abil:

Joon : Taru õpetus - taruarhitektuur

Nagu ülaltoodud pildil näidatud, võib taruarhitektuuri jagada järgmistesse komponentidesse:

  • Taru kliendid: Hive toetab paljudes keeltes kirjutatud rakendusi, nagu Java, C ++, Python jne, kasutades JDBC, Thrift ja ODBC draivereid. Seega võib taru kliendirakenduse alati kirjutada nende valitud keeles.
  • Tarude teenused: Apache Hive pakub päringute esitamiseks erinevaid teenuseid, näiteks CLI, veebiliides jne. Me uurime kõiki neist varsti selles taru õpetuse ajaveebis.
  • Raamistiku töötlemine ja ressursside haldamine: Sisemiselt,Hive kasutab päringute täitmiseks de facto mootorina Hadoop MapReduce raamistikku. on omaette teema ja seetõttu seda siin ei käsitleta.
  • Jaotatud salvestusruum: Kuna Hive on installitud Hadoopi peale, kasutab see hajutatud salvestusruumiks aluseks olevat HDFS-i. Võite viidata HDFS-i ajaveeb selle kohta lisateabe saamiseks.

Nüüd uurime taruarhitektuuri kahte esimest peamist komponenti:

1. Taru kliendid:

Apache Hive toetab tarus päringute esitamiseks erinevat tüüpi klientrakendusi. Neid kliente saab jagada kolme tüüpi:

  • Säästukliendid: Kuna Hive'i server põhineb Apache Thriftil, suudab see teenust taotleda kõigilt Thriftit toetavatelt programmeerimiskeeltelt.
  • JDBC kliendid: Hive võimaldab Java-rakendustel sellega ühenduse luua JDBC draiveri abil, mis on määratletud klassi org.apache.hadoop.taru.jdbc.HiveDriver.
  • ODBC kliendid: Hive'i ODBC-draiver võimaldab rakendustega, mis toetavad ODBC-protokolli, Hive'iga ühenduse luua. (Nagu JDBC draiver, kasutab ka ODBC draiver rakendust Thive, et suhelda Hive serveriga.)

2. Taruteenused:

Hive pakub paljusid teenuseid, nagu on näidatud ülaltoodud pildil. Vaatame neid kõiki:

  • Taru CLI (käsurea liides): See on taru vaikevoor, kus saate otse oma taru päringuid ja käske täita.
  • Apache Hive'i veebiliidesed: Lisaks käsurea liidesele pakub Hive Hive'i päringute ja käskude täitmiseks ka veebipõhist GUI-d.
  • Taru server: Taru server on ehitatud Apache Thriftile ja seetõttu nimetatakse seda ka Thrift Serveriks, mis võimaldab erinevatel klientidel esitada tarudele päringuid ja hankida lõpptulemus.
  • Apache Hive draiver: See vastutab kliendi CLI, veebiliidese, Thrifti, ODBC või JDBC liideste kaudu esitatud päringute vastuvõtmise eest. Seejärel edastab draiver päringu kompilaatorile, kus parsimine, tüübikontroll ja semantiline analüüs toimuvad metapoes asuva skeemi abil. Järgmises etapis genereeritakse optimeeritud loogiline plaan DAG (Directed Acyclic Graph) kujul, mis sisaldab kaarte vähendavaid ülesandeid ja HDFS-i ülesandeid. Lõpuks täidab käivitamismootor need ülesanded sõltuvuse järjekorras, kasutades Hadoopi.
  • Metastore: Võite mõelda metastorekeskse hoidlana kogu taru metaandmete teabe salvestamiseks. Taru metaandmed sisaldavad erinevat tüüpi teavet, näiteks tabelite ja partitsioonide struktuurikoos veeru, veeru tüübi, serialiseerija ja deserialiseerijaga, mis on vajalikud HDFS-is olevate andmete lugemis- / kirjutamistoiminguteks. Metastorekoosneb kahest põhiüksusest:
    • Teenus, mis pakub metastoreidjuurdepääs teistelerTaruteenused.
    • HDFS-mälust eraldatud metaandmete kettahoidla.

Nüüd mõistame Hive metastore'i rakendamise erinevaid viiseselle taruõpetuse järgmises osas.

Apache Hive'i õpetus: metastore'i seadistamine

Metastore salvestab metaandmete teavet, kasutades RDBMS-i ja avatud lähtekoodiga ORM (Object Relational Model) kihti nimega Data Nucleus, mis teisendab objekti esitusviisi suhteskeemiks ja vastupidi. HDFS-i asemel RDBMS-i valimise põhjus on madala latentsuse saavutamine. Me saame rakendada metastore'i järgmises kolmes konfiguratsioonis:

1. Sisseehitatud metapood:

Nii metastore- kui ka Hive-teenus töötab vaikimisi samas JVM-is, kasutades sisseehitatud Derby Database'i eksemplari, kus metaandmed on salvestatud kohalikule kettale. Seda nimetatakse manustatud metastore'i konfiguratsiooniks. Sellisel juhul saab metastore andmebaasiga korraga ühendust luua ainult üks kasutaja. Kui käivitate taru draiveri teise eksemplari, kuvatakse tõrge. See on hea üksuste testimiseks, kuid mitte praktiliste lahenduste jaoks.

2. Kohalik metapood:

See konfiguratsioon võimaldab meil korraldada mitu Hive'i seanssi, st mitu kasutajat saavad metastore andmebaasi korraga kasutada. Selle saavutamiseks kasutatakse mis tahes JDBC-ga ühilduvat andmebaasi, näiteks MySQL, mis töötab eraldi JVM-is või muus masinas kui Hive'i teenuse ja metastore'i teenuses, mis töötab samas JVM-is, nagu eespool näidatud. Üldiselt on populaarseim valik rakendada MySQL-server metastore-andmebaasina.

3. Kaugmetastaas:

Kaugmetastaaside konfiguratsioonis töötab metastore-teenus omaette JVM-iga ja mitte Hive-teenuse JVM-is. Teised protsessid suhtlevad metastore-serveriga Thrift Network API-de abil. Suurema kättesaadavuse tagamiseks võib teil olla üks või mitu metastore-serverit.Kaugmetastore'i kasutamise peamine eelis on see, et metastooride andmebaasile juurdepääsemiseks ei pea JDBC sisselogimismandaate jagama iga Hive'i kasutajaga.

Apache Hive'i õpetus: andmemudel

Tarus olevaid andmeid saab granuleeritult kategoriseerida kolme tüüpi:

  • Tabel
  • Jaotus
  • Kopp

Tabelid:

Tarus olevad tabelid on samad kui relatsioonide andmebaasis olevad tabelid. Nendega saate teha filtreerimis-, projekti-, liitumis- ja liitumisoperatsioone. Tarus on kahte tüüpi tabeleid:

1. Hallatud tabel:

Käsk:

CREATE TABEL (veerg1 data_type, veerg2 data_type)

LOAD DATA INPATH INTO tabelisse hallatav_tabel

Nagu nimigi ütleb (hallatud tabel), vastutab Hive hallatud tabeli andmete haldamise eest. Teisisõnu, mida ma mõtlesin, öeldes: 'Taru haldab andmeid', on see, et kui laadite andmed HDFS-is olevast failist tarusse Hallatud tabel ja väljastage sellel käsk DROP, kustutatakse tabel koos selle metaandmetega. Niisiis, langevad andmed hallatud_tabel HDFS-is pole enam kusagil olemas ja te ei saa seda mingil viisil alla laadida. Põhimõtteliselt liigutate andmeid, kui väljastate käsu LOAD HDFS-i faili asukohast Hive'i laokataloogi.

Märge: Laokataloogi vaiketeeks on seatud / user / hive / ladu. Taru tabeli andmed asuvad lao_kataloogis / tabeli_nimi (HDFS). Laokataloogi tee saate määrata ka hive.metastore.warehouse.dir konfiguratsiooniparameetris hive-site.xml.

sõõrikuplaan vs sektordiagramm

2. Väline tabel:

Käsk:

LOO VÄLISTABEL (veerg1 data_type, veerg2 data_type) LOCATION ''

LAADI ANDMETE SISESTUS ’’ TABELI

Sest väline laud , Hive ei vastuta andmete haldamise eest. Sel juhul, kui väljastate käsu LOAD, teisaldab Hive andmed oma laokataloogi. Seejärel loob Hive välise tabeli metaandmete teabe. Kui nüüd väljastate käsule DROP käsu väline laud , kustutatakse ainult metaandmete teave välise tabeli kohta. Seetõttu saate HDFS-käskude abil ikkagi selle välise tabeli andmed laokataloogist taastada.

Vaheseinad:

Käsk:

CREATE TABLE tabeli_nimi (veerg1 data_type, veerg2 data_type) PARTITIONED BY (partition1 data_type, partition2 data_type ja hellip.)

Hive korraldab tabelid partitsioonideks sarnase tüüpi andmete rühmitamiseks veeru või jaotusvõtme põhjal. Igal tabelil võib olla konkreetse sektsiooni tuvastamiseks üks või mitu jaotusvõtit. See võimaldab meil andmete viilude kohta kiiremat päringut teha.

Märge: Pidage meeles, et levinuim viga partitsioonide loomisel on olemasoleva veeru nime määramine partitsioonide veeruna. Seda tehes kuvatakse tõrge - „Viga semantilises analüüsis: veergu korratakse veergude jaotamisel”.

Mõistkem jaotist, võttes näite, kus mul on tabel student_details, mis sisaldab mõne insenerikolledži üliõpilase teavet, näiteks student_id, nimi, osakond, aasta jne. Kui ma jaotan osakonna veeru põhjal, siis kõigi õpilaste andmed kindlale osakonnale kuuluvad tooted salvestatakse koos just selles partitsioonis. Füüsiliselt pole partitsioon muud kui alamkataloog tabeli kataloogis.

Oletame, et meie õpilaste üksikasjade tabelis on andmeid kolme osakonna kohta - CSE, ECE ja Civil. Seetõttu on meil kõigi osakondade jaoks kokku kolm vaheseina, nagu on näidatud alloleval pildil. Ja iga osakonna kohta on meil kõik andmed selle osakonna kohta, mis asuvad eraldi alamkataloogis Hive tabeli kataloogi all. Näiteks kõik CSE osakondade õpilaste andmed salvestatakse kasutaja / taru / ladu / õpilase_detailid / osakond = CSE. Niisiis, täiusliku täppisettevõtte õpilasi puudutavatel päringutel tuleks ainult otsida täiusliku täppisüksuse partitsioonis olevaid andmeid. See muudab jaotamise väga kasulikuks, kuna see vähendab päringu latentsust ainult skannimisega asjakohane kogu andmekogumi asemel jaotatud andmed. Tegelikult tegelete reaalsetes rakendustes sadade TB-de andmetega. Kujutage ette, kui skanniksite selle tohutu hulga andmeid mõne päringu jaoks 95% teie skannitud andmed ei vastanud teie päringule.

Ma soovitaksin teil läbi ajaveebi minna Taru käsud kus leiate näite abil erinevaid viise partitsioonide rakendamiseks.

Kopad:

Käsud:

CREATE TABLE table_name PARTITIONED BY (partition1 data_type, partition2 data_type, & hellip.) CLUSTERED BY (veeru_nimi1, veeru_nimi2,…) SORTED BY (veeru_nimi [ASC | DESC], ...)] NUMBURID KAUPADESSE

Nüüd võite jagada iga sektsiooni või jaotamata tabeli kopadeks, tuginedes tabeli veeru räsimisfunktsioonile. Tegelikult on iga ämber vaid fail partitsioonide kataloogis või tabelite kataloogis (jaotamata tabel). Seega, kui olete otsustanud jaotada partitsioonid n ämbriks, on igas teie partitsioonide kataloogis n faili. Näiteks näete ülaltoodud pilti, kus oleme iga partitsiooni pannud kaheks ämbriks. Nii et igal sektsioonil, näiteks CSE-l, on kaks faili, kus kumbki neist hoiab CSE-õpilase andmeid.

Kuidas Hive ridu ämbritesse jaotab?

Noh, Hive määrab rea ämbrinumbri järgmise valemi abil: hash_function (ämbri_veerg) modulo (ämbrite arv) . Siin, hash_funktsioon sõltub veeru andmetüübist. Näiteks kui lisate tabeli mõne andmetüübi INT veergu (näiteks kasutaja_id) põhjal, on hash_funktsioon - hash_function (kasutaja ID ) = user_id täisarv . Oletame, et olete loonud kaks ämbrit, siis määrab Hive igas partitsioonis rida, mis lähevad ämbrisse 1, arvutades:väärtus user_id) modulo (2). Seetõttu asuvad sel juhul read, mille user_id lõpeb paarisarvulise arvuga, samas jaotises, mis vastab igale sektsioonile. Teiste andmetüüpide hash_funktsioon on arvutamiseks natuke keeruline ja tegelikult pole stringi jaoks seda isegi inimlikult äratuntav.

Märge: Kui kasutate Apache Hive 0.x või 1.x, peate enne pakkimise sooritamist väljastama käsu - seadistage oma taru terminalist hive.enforce.bucketing = true. See võimaldab teil saada õige arvu reduktoreid, kui kasutate klastrite kaupa veeru kopeerimise klausli järgi. Kui te pole seda teinud, võite tabeli kataloogis loodud failide arv olla võrdne ämbrite arvuga. Teise võimalusena võite reduktori arvu määrata ka koppade arvuga, kasutades komplekti mapred.reduce.task = num_bucket.

Miks me vajame ämbreid?

Sektsiooni järjestamise sektsioonil on kaks peamist põhjust:

  • TO kaardi külgliit nõuab, et ainulaadses liitumisvõtmes olevad andmed oleksid samas sektsioonis. Aga kuidas on juhtumitega, kus teie partitsioonivõti erineb liitumisest? Seetõttu saate nendel juhtudel teha kaardi külgühenduse, ühendades tabeli liitmisklahvi abil.
  • Rühmitamine muudab proovivõtmise protsessi tõhusamaks ja võimaldab seetõttu päringu aega vähendada.

Tahaksin selle taru õpetusblogi lõpetada siin. Olen üsna kindel, et olles selle taru juhendajablogi läbi teinud, oleksite aru saanud Apache Hive'i lihtsusest. Sellest ajast peale olete kutid õppinud ära kõik taru põhialused, on viimane aeg omada kogemusi Apache Hive'iga. Niisiis, vaadake selle Hive'i õpetuse ajaveebisarja järgmist blogi, mis käsitleb Hive'i installimist ja alustage Apache Hive'i tööd.

Nüüd, kui olete Apache Hive'ist ja selle funktsioonidest aru saanud, vaadake järgmist Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik hõlmab üle 250 000 rahuloleva õppija, levinud üle kogu maailma. Edureka Big Data Hadoopi sertifitseerimiskoolitus aitab õppijatel saada HDFS, lõnga, MapReduce, Pig, Hive, HBase, Oozie, Flume ja Sqoop ekspertideks, kasutades reaalajas kasutatavaid juhtumeid jaekaubanduse, sotsiaalmeedia, lennunduse, turismi ja rahanduse valdkonnas.

Kas teil on meile küsimus? Palun mainige seda kommentaaride jaotises ja võtame teiega ühendust.