Hive-opas - Hive-arkkitehtuuri ja NASA-tapaustutkimus



Tämä Hive-opetusblogi antaa sinulle perusteellisen tiedon Hive-arkkitehtuurista ja Hive-tietomallista. Se selittää myös NASAn tapaustutkimuksen Apache Hivesta.

Apache Hive -opetusohjelma: Johdanto

Hive on tiukasti teollisuudenlaajuisesti käytetty työkalu Big Data Analyticsille ja loistava työkalu aloittaa kanssa. Tässä Hive-opetusblogissa keskustelemme perusteellisesti Apache Hivesta. Apache Hive on tietovarastointityökalu , joka tarjoaa SQL: n kaltaisen kielen Big Datan kyselyyn ja analysointiin. Hive-kehityksen motivaatio on kitkaton oppimispolku SQL-kehittäjille ja analyytikoille. Hive ei ole pelastaja ei-ohjelmointitaustaisille ihmisille, mutta se vähentää myös ohjelmoijien työtä, jotka viettävät pitkiä tunteja MapReduce-ohjelmien kirjoittamisessa. Tässä Apache Hive Tutorial -blogissa puhun:





Apache Hive -opetusohjelma: Mikä on Hive?

Apache Hive on Hadoopin päälle rakennettu tietovarastojärjestelmä, jota käytetään jäsenneltyjen ja osittain jäsenneltyjen tietojen analysointiin.Hive tiivistää Hadoop MapReducen monimutkaisuuden. Pohjimmiltaan se tarjoaa mekanismin, jolla projekti rakennetaan tiedoille ja suoritetaan HQL: llä (Hive Query Language) kirjoitetut kyselyt, jotka ovat samanlaisia ​​kuin SQL-lauseet. Sisäisesti nämä kyselyt tai HQL muunnetaan kartaksi vähentämään työpaikkoja Hive-kääntäjällä. Siksi sinun ei tarvitse huolehtia monimutkaisten MapReduce-ohjelmien kirjoittamisesta käsittelemään tietojasi Hadoopin avulla. Se on suunnattu käyttäjille, jotka ovat tyytyväisiä SQL: ään. Apache Hive tukee Data Definition Language (DDL), Data Manipulation Language (DML) ja User Defined Functions (UDF).

Hive-opas aloittelijoille | Hiveen syvyyden ymmärtäminen | Edureka



SQL + Hadoop MapReduce = HiveQL

c ++ puhelu viitteenä

Apache Hive Tutorial: Hive Story - Facebookista Apacheen

Facebookin käyttötapa - Hive-opas - EdurekaKuva : Hive Tutorial - Facebook-käyttötapaus

Haasteet Facebookissa: Tietojen eksponentiaalinen kasvu

Ennen vuotta 2008 kaikki Facebookin tietojenkäsittelyinfrastruktuurit rakennettiin kaupallisiin RDBMS-järjestelmiin perustuvan tietovaraston ympärille. Nämä infrastruktuurit olivat riittävän kykeneviä täyttämään tuolloin Facebookin tarpeet. Mutta koska tiedot alkoivat kasvaa erittäin nopeasti, siitä tuli valtava haaste hallita ja käsitellä tätä valtavaa aineistoa. Facebook-artikkelin mukaan tiedot skaalautuivat 15 TB: n tietojoukosta vuonna 2007 2 PB: n dataan vuonna 2009. Monet Facebook-tuotteet sisältävät myös tietojen analysoinnin, kuten Audience Insights, Facebook Lexicon, Facebook Ads jne. Joten he tarvitsi skaalautuvan ja taloudellisen ratkaisun selviytyäkseen juuri tästä ongelmasta, ja aloitti siksi Hadoop-kehyksen käytön.



Demokratisointi Hadoop - MapReduce

Mutta tietojen kasvaessa Map-Reduce -koodien monimutkaisuus kasvoi suhteessa. Joten kouluttamattomien ihmisten kouluttaminen kirjoittamaan MapReduce-ohjelmia tuli vaikeaksi. Lisäksi yksinkertaisen analyysin suorittamiseksi on kirjoitettava sata riviä MapReduce-koodia. Koska insinöörit ja analyytikot, mukaan lukien Facebook, käyttivät SQL: ää laajalti, SQL: n asettaminen Hadoopin päälle tuntui loogiselta tapalta tehdä Hadoopin saataville SQL-taustalla oleville käyttäjille.

Näin ollen SQL: n kyky riittää suurimpaan osaan analyyttisistä vaatimuksista ja Hadoopin skaalautuvuus synnytti Apache Hive jonka avulla voidaan suorittaa SQL-tyyppisiä kyselyjä HDFS: ssä oleville tiedoille. Myöhemmin Facebook avasi Hive-projektin elokuussa 2008 ja on tänään vapaasti saatavilla Apache Hive -nimellä.

Katsotaanpa nyt Hiveen ominaisuuksia ja etuja, jotka tekevät siitä niin suositun.

Apache Hive -opetusohjelma: Hiveen edut

  • Hyödyllinen ihmisille, jotka eivät ole ohjelmointitausta, koska se poistaa tarpeen kirjoittaa monimutkainen MapReduce-ohjelma.
  • Laajennettavissa ja skaalautuva selviytymään kasvavasta datamäärästä ja -valikoimasta vaikuttamatta järjestelmän suorituskykyyn.
  • Se on tehokas ETL (Extract, Transform, Load) -työkalu.
  • Hive tukee kaikkia Java-, PHP-, Python-, C ++ - tai Ruby-kielellä kirjoitettuja asiakassovelluksia paljastamalla sen Säästöpalvelin . (Voit käyttää näitä SQL: ään upotettuja asiakaspuolen kieliä päästäksesi tietokantaan, kuten DB2, jne.).
  • Koska Hiveen metatietotiedot on tallennettu RDBMS: ään, se vähentää huomattavasti semanttisten tarkastusten suorittamisen aikaa kyselyn suorituksen aikana.

Apache Hive -opetusohjelma: Missä Apache Hiveä käytetään?

Apache Hive hyödyntää molempia maailmoja eli SQL-tietokantajärjestelmää ja puitteet. Siksi sitä käyttää valtava joukko yrityksiä. Sitä käytetään enimmäkseen tietovarastointiin, jossa voit suorittaa analytiikkaa ja tiedonlouhintaa, joka ei vaadi reaaliaikaista käsittelyä. Jotkut kentistä, joissa voit käyttää Apache Hiveä, ovat seuraavat:

  • Tietovarastointi
  • Ad-hoc-analyysi

Kuten sanotaan, et voi taputtaa vain yhdellä kädellä, ts. Et voi ratkaista kaikkia ongelmia yhdellä työkalulla. Siksi voit yhdistää Hiveen muiden työkalujen kanssa käyttääksesi sitä monilla muilla verkkotunnuksilla. Esimerkiksi Tableaua ja Apache Hiveä voidaan käyttää tietojen visualisointiin, Apache Tezin integrointi Hiveen tarjoaa reaaliaikaisia ​​käsittelyominaisuuksia jne.
Siirry eteenpäin tässä Apache Hive Tutorial -blogissa, katsokaamme NASAn tapaustutkimusta, jossa opit kuinka Hive ratkaisi NASAn tutkijoiden kohtaaman ongelman arvioidessaan ilmastomalleja.

Hive-opas: NASA-tapaustutkimus

Ilmastomalli on matemaattinen esitys ilmastojärjestelmistä, jotka perustuvat erilaisiin tekijöihin, jotka vaikuttavat maapallon ilmastoon. Pohjimmiltaan se kuvaa ilmaston eri tekijöiden, kuten valtameren, auringon, ilmakehän jne., Vuorovaikutustaantaa käsityksen ilmastojärjestelmän dynamiikasta. Sitä käytetään ennustamaan ilmasto-olosuhteita simuloimalla ilmastonmuutoksia ilmastoon vaikuttavien tekijöiden perusteella. NASAn suihkumoottorilaboratorio on kehittänyt alueellisen ilmastomallin arviointijärjestelmän (RCMES) ilmastotuotantomallin analysointia ja arviointia varten erilaisissa ulkoisissa arkistoissa olevien kaukokartoitustietojen suhteen.

RCMES: llä (Regional Climate Model Evaluation System) on kaksi osaa:

  • RCMED (alueellinen ilmastomallin arviointitietokanta):

Se on skaalautuva pilvitietokanta, joka lataa ilmastoon liittyvät kaukokartoitustiedot ja uudelleenanalyysitiedot uuttolaitteilla, kuten Apache OODT -uuttimet, Apache Tika jne. Lopuksi se muuntaa tiedot datapistemalliksi, joka on muodoltaan (leveysaste , pituusaste, aika, arvo, korkeus) ja tallentaa sen My SQL -tietokantaan. Asiakas voi noutaa RCMED: ssä olevat tiedot suorittamalla Aika / Aikakyselyt. Tällaisten kyselyjen kuvaus ei ole meille merkityksellistä nyt.

  • RCMET (alueellinen ilmastomallin arviointityökalu):

Se tarjoaa käyttäjälle mahdollisuuden verrata RCMED-järjestelmässä olevia viitetietoja ilmastomallin lähtödataan, joka on haettu joistakin muista lähteistä erilaisten analyysien ja arviointien suorittamiseksi. Voit viitata alla olevaan kuvaan ymmärtääksesi RCMES-arkkitehtuurin.

RCMED: n viitetiedot ovat peräisin satelliittipohjaisesta kaukokartoituksesta ilmastomallin arviointiin tarvittavien eri parametrien mukaan. Esimerkiksi - AIRS (Atmospheric Infrared Sounder) tarjoaa parametrit, kuten pinnan ilman lämpötila, lämpötila ja geopotentiaali, TRMM (trooppinen sademittaus) tarjoaa kuukausittaisen sademäärän jne.

NASAn kohtaamat ongelmat MySQL-tietokantajärjestelmän avulla:

  • Ladattuaan MySQL-tietokantaan 6 miljardia lomakejoukkoa (leveysaste, pituusaste, aika, datapisteen arvo, korkeus), järjestelmä kaatui yllä olevan kuvan mukaisesti.
  • Jopa koko taulukon jakamisen pienemmiksi osajoukoiksi järjestelmä tuotti valtavia yleiskustannuksia tietojen käsittelyn aikana.

Joten he tarvitsivat skaalautuvan ratkaisun, joka pystyy tallentamaan ja käsittelemään tämän valtavan määrän tietoa SQL-tyyppisellä kyselyominaisuudella. Lopuksi he päättivät käyttää Apache Hiveä yllä mainittujen ongelmien ratkaisemiseksi.

Kuinka Apache Hive voi ratkaista ongelman?

Katsotaanpa, mitkä ovat ne ominaisuudet, jotka vakuuttivat NASA: n JPL-tiimin sisällyttämään Apache Hiven kiinteään osaan ratkaisustrategiaansa:

  • Koska Apache Hive toimii Hadoopin päällä, se on skaalautuva ja voi käsitellä tietoja hajautetusti ja rinnakkain.
  • Se tarjoaa Hive-kyselykielen, joka on samanlainen kuin SQL ja siten helppo oppia.

Hiveen käyttöönotto:

Seuraava kuva selittää RCMES-arkkitehdin Apache Hive -integraatiolla:

Kuva : Hive-opas - RCMES-arkkitehtuuri Apache Hiven kanssa

Yllä oleva kuva näyttää apache-pesän käyttöönoton RCMES: ssä. NASA-tiimi otti seuraavat vaiheet käyttöön ottaessaan Apache Hive:

  • He asensivat Hiven käyttämällä Cloudera- ja Apache Hadoop -laitteita yllä olevan kuvan mukaisesti.
  • He käyttivät Apache Sqoopia tietojen saamiseksi Hiveen MySQL-tietokannasta.
  • Apache OODT -kääre toteutettiin kyselyjen suorittamiseksi Hivelle ja tietojen palauttamiseksi RCMET: ään.

Alkuperäiset vertailuhavainnot Hive:

  • Aluksi he lataivat 2,5 miljardia datapistettä yhteen taulukkoon ja suorittivat laskukyselyn. Esimerkiksi, Hive> valitse count (datapoint_id) dataPointista. Kaikkien ennätysten laskeminen kesti 5-6 minuuttia (15–17 minuuttia koko 6,8 miljardin levyn kohdalla).
  • Pelkistysvaihe oli nopea, mutta karttavaihe kesti 95% prosessointiaikasta. He käyttivät kuutta ( 4x neliytiminen ) järjestelmät 24 Gt RAM-muistia (noin) kussakin järjestelmässä.
  • Jopa lisäämällä lisää koneita, muuttamalla HDFS-lohkokokoa (64 Mt, 128 Mt, 256 Mt) ja muuttamalla monia muita kokoonpanomuuttujia (io.järjestellä.tekijä, i.järjestellä.mb), he eivät saaneet paljon menestystä vähentämällä aikaa laskemiseen.

Hive-yhteisön jäsenten panokset:

Lopuksi Hive-yhteisön jäsenet tulivat pelastamaan ja tarjosivat erilaisia ​​oivalluksia ongelmien ratkaisemiseksi nykyisillä Hive-toteutuksillaan:

  • He mainitsivat, että HDFS-lukunopeus on noin 60 Mt / s verrattuna 1 Gt / s paikallisen levyn tapauksessa riippuen verkon kapasiteetista ja NameNoden työmäärästä.
  • Jäsenet ehdottivat sitä 16 kartoitinta vaaditaan nykyisessä järjestelmässään vastaamaan paikallisen muun kuin Hadoop-tehtävän I / O-suoritusta.
  • He ehdottivat myös vähentää jaettu koko jokaiselle kartoittajalle lisätäksesi lukumäärää/kartoittajat ja siten lisää rinnakkaisuutta.
  • Lopuksi yhteisön jäsenet kertoivat heille käyttömäärä (1) sijasta viitata Kreivi ( datapoint_id) . Tämä johtuu siitä, että laskennan (1) tapauksessa ei ole vertailusaraketta, joten dekompressiota ja deserialisaatiota ei tapahdu laskennan suorittamisen aikana.

Lopuksi NASA pystyi virittämään Hive-klusterin heidän odotuksiinsa ottamalla huomioon kaikki Hive-yhteisön jäsenten antamat ehdotukset. Siksi he pystyivät kyselemään miljardeja rivejä vain 15 sekunnissa käyttämällä yllä mainittuja järjestelmäkokoonpanoja.

Apache Hive -opetusohjelma: Hive-arkkitehtuuri ja sen komponentit

Seuraava kuva kuvaa Hive-arkkitehtuuria ja kulkua, johon kysely lähetetäänPesäja lopulta käsitelty MapReduce-kehyksen avulla:

Kuva : Hive-opas - Hive-arkkitehtuuri

Kuten yllä olevassa kuvassa näkyy, Hive-arkkitehtuuri voidaan luokitella seuraaviin komponentteihin:

  • Hive-asiakkaat: Hive tukee sovellusta, joka on kirjoitettu monilla kielillä, kuten Java, C ++, Python jne., Käyttäen JDBC-, Thrift- ja ODBC-ohjaimia. Siksi voidaan aina kirjoittaa pesää käyttävä asiakassovellus kirjoitettuna valitsemallasi kielellä.
  • Hive-palvelut: Apache Hive tarjoaa erilaisia ​​palveluja, kuten CLI, Web Interface jne., Kyselyjen suorittamiseen. Tutkimme kutakin niistä pian tässä Hive-opetusblogissa.
  • Käsittelykehys ja resurssien hallinta: Sisäisesti,Hive käyttää Hadoop MapReduce -kehystä tosiasiallisena moottorina kyselyjen suorittamiseen. on itsessään erillinen aihe, joten sitä ei käsitellä tässä.
  • Hajautettu varastointi: Koska Hive on asennettu Hadoopin päälle, se käyttää taustalla olevaa HDFS: ää hajautettuun tallennustilaan. Voit viitata HDFS-blogi oppia siitä lisää.

Tutkitaan nyt kahta ensimmäistä pääkomponenttia Hive-arkkitehtuurissa:

1. Hive-asiakkaat:

Apache Hive tukee erityyppisiä asiakassovelluksia kyselyjen suorittamiseen Hivessa. Nämä asiakkaat voidaan luokitella kolmeen tyyppiin:

  • Säästöasiakkaat: Koska Hive-palvelin perustuu Apache Thriftiin, se voi palvella pyyntöä kaikilta Thriftiä tukevilta ohjelmointikieliltä.
  • JDBC-asiakkaat: Hive antaa Java-sovellusten muodostaa yhteyden siihen luokan org määritellyllä JDBC-ohjaimella.apache.hadoop.hive.jdbc.HiveDriver.
  • ODBC-asiakkaat: Hive ODBC -ohjain sallii ODBC-protokollaa tukevien sovellusten muodostaa yhteyden Hiveen. (Kuten JDBC-ohjain, ODBC-ohjain käyttää Thriftiä kommunikoimaan Hive-palvelimen kanssa.)

2. Hive-palvelut:

Hive tarjoaa monia palveluja, kuten yllä olevassa kuvassa näkyy. Katsotaanpa heitä kaikkia:

  • Hive CLI (komentoriviliitäntä): Tämä on Hive-laitteen oletuskuori, jossa voit suorittaa Hive-kyselyt ja -komennot suoraan.
  • Apache Hive -verkkoliittymät: Komentoriviliittymän lisäksi Hive tarjoaa myös verkkopohjaisen käyttöliittymän Hive-kyselyjen ja -komentojen suorittamiseen.
  • Hive-palvelin: Hive-palvelin on rakennettu Apache Thriftille, ja siksi sitä kutsutaan myös Thrift-palvelimeksi, jonka avulla eri asiakkaat voivat lähettää pyyntöjä Hiveen ja noutaa lopputuloksen.
  • Apache Hive -ohjain: Se vastaa CLI: n, web-käyttöliittymän, Thriftin, ODBC: n tai JDBC-rajapintojen kautta asiakkaan lähettämien kyselyiden vastaanottamisesta. Sitten kuljettaja välittää kyselyn kääntäjälle, jossa jäsentäminen, tyypin tarkistus ja semanttinen analyysi tapahtuu metastoreen sisältyvän skeeman avulla. Seuraavassa vaiheessa optimoitu looginen suunnitelma luodaan DAG: n (Directed Acyclic Graph) muodossa, joka sisältää karttoja pienentävät tehtävät ja HDFS-tehtävät. Lopuksi suoritusmoottori suorittaa nämä tehtävät riippuvuuksiensa järjestyksessä Hadoopin avulla.
  • Metastore: Voit ajatella metastakeskeisenä arkistona kaikkien Hive-metatietojen tallentamiseen. Hive-metatiedot sisältävät erityyppisiä tietoja, kuten taulukoiden ja osioiden rakenneyhdessä sarakkeen, saraketyypin, serializerin ja deserializerin kanssa, joita tarvitaan HDFS: ssä olevien tietojen luku- / kirjoitusoperaatioon. Metastorekoostuu kahdesta perusyksiköstä:
    • Metastore-palvelupääsy muihinrHive-palvelut.
    • Metatietojen levytallennus, joka on erillinen HDFS-tallennustilasta.

Ymmärretään nyt Hive-metastoren toteuttamisen eri tapojatämän Hive-opetusohjelman seuraavassa osassa.

Apache Hive -opetusohjelma: Metastore-määritykset

Metastore tallentaa metadatatiedot käyttämällä RDBMS: ää ja avointa lähdekoodin ORM (Object Relational Model) -kerrosta nimeltä Data Nucleus, joka muuntaa objektiesityksen relaatiomalliksi ja päinvastoin. Syynä RDBMS: n valitsemiseen HDFS: n sijasta on matalan viiveen saavuttaminen. Voimme toteuttaa metastoreen seuraavissa kolmessa kokoonpanossa:

1. Upotettu metastore:

Sekä metastore-palvelu että Hive-palvelu toimivat oletusarvoisesti samassa JVM: ssä käyttämällä upotettua Derby Database -esiintymää, jossa metatiedot on tallennettu paikalliselle levylle. Tätä kutsutaan upotetuksi metastore-kokoonpanoksi. Tässä tapauksessa vain yksi käyttäjä voi muodostaa yhteyden metastore-tietokantaan kerrallaan. Jos käynnistät toisen Hive-ohjaimen, saat virheilmoituksen. Tämä on hyvä yksikötestaukseen, mutta ei käytännön ratkaisuihin.

ylikuormitus ja ohittaminen java

2. Paikallinen metastore:

Tämän kokoonpanon avulla meillä voi olla useita Hive-istuntoja, ts. Useat käyttäjät voivat käyttää metastore-tietokantaa samanaikaisesti. Tämä saavutetaan käyttämällä mitä tahansa JDBC-yhteensopivaa tietokantaa, kuten MySQL, joka toimii erillisessä JVM: ssä tai eri koneessa kuin Hive-palvelun ja metastore-palvelun kone, joka toimii samassa JVM: ssä kuin yllä on esitetty. Yleensä suosituin vaihtoehto on toteuttaa MySQL-palvelin metastore-tietokantana.

3. Etämetastore:

Etämetastore-kokoonpanossa metastore-palvelu toimii omalla erillisellä JVM: llä eikä Hive-palvelun JVM: llä. Muut prosessit ovat yhteydessä metastore-palvelimeen Thrift Network -sovellusliittymien avulla. Sinulla voi olla yksi tai useampia metastore-palvelimia paremman saatavuuden takaamiseksi.Etämetastoreen käytön tärkein etu on, että sinun ei tarvitse jakaa JDBC-kirjautumistietoja jokaiselle Hive-käyttäjälle päästäksesi metastore-tietokantaan.

Apache Hive -opetusohjelma: tietomalli

Hiveen tiedot voidaan luokitella kolmeen tyyppiin rakeisesti:

  • Pöytä
  • Osio
  • Ämpäri

Taulukot:

Hiveen taulukot ovat samat kuin relaatiotietokannassa olevat taulukot. Voit suorittaa heille suodatus-, projekti-, liittymis- ja yhdistämistoimintoja. Hivessä on kahden tyyppisiä taulukoita:

1. Hallittu taulukko:

Komento:

Luo taulukko (sarake1 data_type, sarake2 data_type)

LATAA DATA INPATH INTO table managed_table

Kuten nimestä voi päätellä (hallittu taulukko), Hive on vastuussa hallinnoidun taulukon tietojen hallinnasta. Toisin sanoen, mitä tarkoitin sanomalla 'Hive hallinnoi tietoja', on se, että jos lataat tiedot HDFS: ssä olevasta tiedostosta Hiveen Hallittu taulukko ja antaa siihen DROP-komento, taulukko ja sen metatiedot poistetaan. Joten, tiedot kuuluvat pudonnut hallittu_taulukko ei ole enää missään HDFS: ssä, etkä voi hakea sitä millään tavalla. Pohjimmiltaan siirrät tietoja, kun annat LOAD-komennon HDFS-tiedoston sijainnista Hive-varastohakemistoon.

Huomautus: Varastohakemiston oletuspoluksi on asetettu / käyttäjä / pesä / varasto. Hive-taulukon tiedot sijaitsevat varastohakemistossa / taulukon_nimi (HDFS). Voit myös määrittää varastohakemiston polun hive.metastore.warehouse.dir-määritysparametrissa, joka on hive-site.xml-tiedostossa.

2. Ulkoinen taulukko:

Komento:

LUO ULKOINEN TAULUKKO (sarake1 data_type, sarake2 data_type) SIJAINTI ’’

LATAA DATA INPATH ’’ TAULUKKOON

Sillä ulkoinen pöytä , Hive ei ole vastuussa tietojen hallinnasta. Tässä tapauksessa, kun annat LOAD-komennon, Hive siirtää tiedot varastohakemistoonsa. Sitten Hive luo metadatatiedot ulkoiselle taulukolle. Jos nyt annat DROP-komennon ulkoinen pöytä , vain ulkoisen taulukon metatiedot poistetaan. Siksi voit silti hakea kyseisen ulkoisen taulukon tiedot takaisin varastohakemistosta HDFS-komentojen avulla.

Osiot:

Komento:

LUO TAULUKKO taulukon_nimi (sarake1 data_type, sarake2 data_type) JAKELU (osio1 data_type, osio2 data_type ja hellip.)

Hive järjestää taulukot osioiksi samankaltaisten tietojen ryhmittelemiseksi sarakkeen tai osioavaimen perusteella. Jokaisessa taulukossa voi olla yksi tai useampi osioavain tietyn osion tunnistamiseksi. Tämä antaa meille nopeamman kyselyn tiedon osista.

Huomautus: Muista, että yleisin virhe osioiden luomisessa on määritellä olemassa olevan sarakkeen nimi osiosarakkeeksi. Kun teet niin, saat virheilmoituksen 'Virhe semanttisessa analyysissä: sarake toistetaan osiointisarakkeissa'.

Ymmärretään osio ottamalla esimerkki, jossa minulla on taulukko student_details, joka sisältää jonkin teknillisen korkeakoulun opiskelijatiedot, kuten student_id, nimi, laitos, vuosi jne. Jos nyt suoritan osioinnin laitosarakkeen perusteella, kaikkien opiskelijoiden tiedot tiettyyn osastoon kuuluvat, tallennetaan yhdessä samaan osioon. Fyysisesti osio ei ole muuta kuin alihakemisto taulukon hakemistossa.

Oletetaan, että student_details-taulukossa on tietoja kolmesta osastosta - CSE, ECE ja Civil. Siksi meillä on yhteensä kolme osiota kullekin osastolle, kuten alla olevassa kuvassa näkyy. Ja jokaisella osastolla meillä on kaikki tiedot juuri tästä osastosta, joka asuu erillisessä alihakemistossa Hive-taulukon hakemistossa. Esimerkiksi kaikki täsmähakukoneosastoja koskevat opiskelijatiedot tallennetaan käyttäjään / pesään / varastoon / opiskelijan_tiedot / osasto = täsmähakukoneeseen. Joten täsmähakukoneopiskelijoita koskevilla kyselyillä on vain tarkasteltava täsmähakukoneen osiossa olevia tietoja. Tämä tekee osioinnista erittäin hyödyllistä, koska se vähentää kyselyn viivettä vain skannaamalla merkityksellisiä osioidut tiedot koko tietojoukon sijaan. Itse asiassa tosielämän toteutuksissa käsitellään satoja TB: itä dataa. Joten kuvittele, kuinka skannaat tämän valtavan määrän tietoja kyselyille missä 95% skannaamasi tiedot eivät liittyneet kyselyyn.

Ehdotan, että käisit blogin läpi Hive-komennot josta löydät erilaisia ​​tapoja osioiden toteuttamiseen esimerkin avulla.

Kauhat:

Komennot:

LUO TAULUKKO taulukon_nimi OSITETTU (osio1 tietotyyppi, osio2 tietotyyppi ja hellip.) CLUSTERED BY (sarakkeen_nimi1, sarakkeen_nimi2,…) Lajiteltu (sarakkeen_nimi [ASC | DESC],…)] NOKOJEN KAUKOIHIN

Voit nyt jakaa kukin osio tai jakamaton taulukko kaapeiksi taulukon sarakkeen tiivistefunktion perusteella. Itse asiassa kukin ryhmä on vain tiedosto osiohakemistossa tai taulukohakemistossa (osioimaton taulukko). Siksi, jos olet päättänyt jakaa osiot n ryhmään, sinulla on n tiedostoa kussakin osiohakemistossa. Voit esimerkiksi nähdä yllä olevan kuvan, jossa olemme sijoittaneet jokaisen osion kahteen ämpäriin. Joten jokaisella osiolla, sanotaan täsmähakukoneella, on kaksi tiedostoa, joissa kukin niistä tallentaa täsmähakukoneopiskelijan tiedot.

Kuinka Hive jakaa rivit ämpäreiksi?

Hive määrittää rivin kauhanumeron kaavan avulla: hash_function (bucketing_column) modulo (ämpärien lukumäärä) . Tässä, hash_function riippuu sarakkeen tietotyypistä. Jos esimerkiksi ryhmität taulukon jonkin tietotyypin sarakkeen, sanotaan käyttäjän_tunnus, perusteella, hash_funktio on - hash_function (käyttäjän_id ) = käyttäjän_tunnuksen kokonaisluku . Oletetaan, että olet luonut kaksi ämpäriä, ja sitten Hive määrittää rivit, jotka menevät kauhaan 1 kussakin osiossa, laskemalla: (user_id) arvo modulo (2). Siksi tässä tapauksessa rivit, joissa user_id päättyy parilliseen kokonaislukuun, asuvat samassa ämpärissä, joka vastaa kutakin osiota. Muiden tietotyyppien hash_funktio on hieman monimutkainen laskea, ja itse asiassa merkkijonolle se ei ole edes ihmisen tunnistettavissa.

Huomautus: Jos käytät Apache Hive 0.x- tai 1.x-versiota, sinun on annettava komento - aseta hive.enforce.bucketing = true Hive-päätelaitteestasi ennen ryhmittelyä. Tämä antaa sinulle oikean määrän pelkistimiä, kun käytät klusteria lausekkeen avulla sarakkeen ryhmittämiseen. Jos et ole tehnyt niin, saatat huomata, että taulukohakemistoon luotujen tiedostojen määrä ei ole yhtä suuri kuin ryhmien määrä. Vaihtoehtoisesti voit myös asettaa vähennyslaskurien määrän yhtä suureksi kuin kauhojen lukumääräksi käyttämällä joukkoa mapred.reduce.task = num_bucket.

Miksi tarvitsemme kauhoja?

On kaksi pääasiallista syytä ryhmittelyyn osioon:

  • TO kartan puoleinen liittyminen edellyttää, että ainutlaatuiseen liittymisavaimeen kuuluvat tiedot ovat läsnä samassa osiossa. Mutta entä ne tapaukset, joissa osioavaimesi eroaa liittymisestä? Siksi näissä tapauksissa voit suorittaa kartan puoleisen liittymisen ryhmittelemällä taulukon liittymisnäppäimellä.
  • Ryhmä tekee näytteenottoprosessista tehokkaamman ja antaa meille siten mahdollisuuden lyhentää kyselyaikaa.

Haluaisin tehdä tämän Hive-opetusblogin täällä. Olen melko varma, kun olet käynyt läpi tämän Hive-opetusblogin, olisit ymmärtänyt Apache Hiven yksinkertaisuuden. Siitä lähtien olette oppineet kaikki pesän perusteet, on korkea aika olla käsillä kokemuksesta Apache Hivesta. Joten, tutustu tämän Hive Tutorial -blogisarjan seuraavaan blogiin, joka on Hive-asennus ja aloita työskentely Apache Hive -ohjelmassa.

Nyt kun olet ymmärtänyt Apache Hive ja sen ominaisuudet, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Edureka Big Data Hadoop -sertifiointikoulutus auttaa oppijoita tulemaan HDFS-, Lanka-, MapReduce-, Pig-, Hive-, HBase-, Oozie-, Flume- ja Sqoop-asiantuntijoiksi reaaliaikaisten käyttötapausten avulla vähittäiskaupan, sosiaalisen median, ilmailun, matkailun ja rahoituksen toimialueilla.

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja palaamme sinuun.