Vadnica za panj - Arhitektura panjev in študija primera NASA



Ta blog o vajah Hive vam daje poglobljeno znanje o arhitekturi panja in podatkovnem modelu panja. Pojasnjuje tudi študijo primera NASA o panju Apache.

Vadnica za Apache Hive: Uvod

Hive je strogo uporabljano orodje za analitiko velikih podatkov in odlično orodje za zagon vašega s. V tem blogu o vajah Hive bomo poglobljeno razpravljali o Apache Hive. Apache Hive je orodje za shranjevanje podatkov v , ki ponuja jezik, podoben SQL-u, za poizvedovanje in analizo velikih podatkov. Motivacija razvoja panja je učna pot za razvijalce in analitike SQL brez trenja. Panj ni le rešitelj za ljudi iz ne-programskega okolja, temveč tudi zmanjšuje delo programerjev, ki dolge ure pišejo programe MapReduce. V tem blogu Apache Hive Tutorial bom govoril o:





Vadnica za Apache Hive: Kaj je panj?

Apache Hive je sistem za shranjevanje podatkov, zgrajen na vrhu Hadoopa in se uporablja za analizo strukturiranih in polstrukturiranih podatkov.Hive povzema kompleksnost Hadoop MapReduce. V bistvu zagotavlja mehanizem za projiciranje strukture na podatke in izvajanje poizvedb, napisanih v HQL (Hive Query Language), ki so podobne stavkom SQL. Prevajalnik Hive interno te poizvedbe ali HQL pretvori v mapo za zmanjšanje števila opravil. Zato vam ni treba skrbeti za pisanje zapletenih programov MapReduce za obdelavo vaših podatkov s pomočjo Hadoop. Namenjen je uporabnikom, ki so zadovoljni s sistemom SQL. Apache Hive podpira jezik za definicijo podatkov (DDL), jezik za upravljanje podatkov (DML) in uporabniško določene funkcije (UDF).

Vadnica za panje za začetnike | Razumevanje panja v globino | Edureka



SQL + Hadoop MapReduce = HiveQL

Vadnica Apache Hive: Zgodba o panju - od Facebooka do Apacheja

Primer uporabe Facebooka - Vadnica za panj - EdurekaSl : Hive Tutorial - primer uporabe Facebooka

Izzivi na Facebooku: eksponentna rast podatkov

Pred letom 2008 je bila vsa infrastruktura za obdelavo podatkov v Facebooku zgrajena okoli podatkovnega skladišča, ki temelji na komercialnih RDBMS. Te infrastrukture so bile dovolj sposobne, da so takrat zadoščale potrebam Facebooka. Ker pa so se podatki začeli zelo hitro povečevati, je postalo velik izziv upravljanje in obdelava tega velikega nabora podatkov. Glede na članek na Facebooku naj bi bili podatki z 15 TB podatkov iz leta 2007 na 2 PB v letu 2009. Tudi številni Facebook proizvodi vključujejo analizo podatkov, kot so Audience Insights, Facebook Lexicon, Facebook Ads itd. je potreboval prilagodljivo in ekonomično rešitev za obvladovanje tega problema in je zato začel uporabljati Hadoop okvir.



Demokratiziranje Hadoop - MapReduce

Ko pa so podatki naraščali, je zapletenost kod za zmanjšanje zemljevidov sorazmerno rasla. Tako je postalo težko usposobiti ljudi z ne-programskim ozadjem za pisanje programov MapReduce. Za izvedbo enostavne analize je treba napisati sto vrstic kode MapReduce. Ker so SQL inženirji in analitiki, vključno s Facebookom, pogosto uporabljali, se je zdelo, da je SQL na vrh Hadoopa logičen način, da Hadoop postane dostopen uporabnikom z ozadjem SQL.

Sposobnost SQL-a, da zadostuje za večino analitičnih zahtev, in razširljivost Hadoop-a sta Apache panj ki omogoča izvajanje SQL podobnih poizvedb glede podatkov, ki so prisotni v HDFS. Kasneje je projekt Hive avgusta 2008 odprl Facebook, danes pa je prosto dostopen kot Apache Hive.

Zdaj pa si poglejmo značilnosti ali prednosti Hiveja, zaradi katerega je tako priljubljen.

Vadnica za Apache Hive: Prednosti panja

  • Uporabno za ljudi, ki niso iz programskega okolja, saj odpravlja potrebo po pisanju zapletenega programa MapReduce.
  • Razširljivo in prilagodljiv za obvladovanje naraščajočega obsega in raznolikosti podatkov, ne da bi to vplivalo na delovanje sistema.
  • Je učinkovito orodje ETL (Extract, Transform, Load).
  • Hive podpira kakršno koli odjemalsko aplikacijo, napisano v Java, PHP, Python, C ++ ali Ruby, tako da izpostavi njeno Varčen strežnik . (Te jezike na strani odjemalca, vdelane v SQL, lahko uporabite za dostop do baze podatkov, kot je DB2 itd.).
  • Ker so podatki o metapodatkih Hive shranjeni v RDBMS, to znatno skrajša čas za izvajanje semantičnih pregledov med izvajanjem poizvedbe.

Vadnica za Apache Hive: Kje uporabiti Apache Hive?

Apache Hive izkorišča oba sveta, tj. SQL Database System in okvir. Zato ga uporablja velika množica podjetij. Uporablja se večinoma za skladiščenje podatkov, kjer lahko izvajate analitiko in podatkovno rudarjenje, ki ne zahteva obdelave v realnem času. Nekatera polja, kjer lahko uporabljate Apache Hive, so naslednja:

  • Skladiščenje podatkov
  • Ad-hoc analiza

Kot rečeno, ne morete ploskati samo z eno roko, torej ne morete rešiti vseh težav z enim samim orodjem. Zato lahko Hive povežete z drugimi orodji, da ga lahko uporabite v številnih drugih domenah. Na primer, Tableau skupaj z Apache Hive lahko uporabite za vizualizacijo podatkov, integracija Apache Tez s Hive vam bo omogočila obdelavo v realnem času itd.
V nadaljevanju tega bloga Apache Hive Tutorial si oglejmo študijo primera NASA, kjer boste spoznali, kako je Hive rešil problem, s katerim so se srečevali NASA-ini znanstveniki med ocenjevanjem klimatskih modelov.

Vadnica za panj: Študija primera NASA

Podnebni model je matematični prikaz podnebnih sistemov, ki temelji na različnih dejavnikih, ki vplivajo na podnebje na Zemlji. V bistvu opisuje medsebojno vplivanje različnih dejavnikov podnebja, kot so ocean, sonce, ozračje itdomogočajo vpogled v dinamiko podnebnega sistema. Uporablja se za načrtovanje podnebnih razmer s simulacijo podnebnih sprememb na podlagi dejavnikov, ki vplivajo na podnebje. NASA-in laboratorij za reaktivni pogon je razvil regionalni sistem za ocenjevanje podnebnih modelov (RCMES) za analizo in oceno podnebnega modela na podlagi podatkov daljinskega zaznavanja, ki so prisotni v različnih zunanjih odlagališčih.

RCMES (regionalni sistem za ocenjevanje podnebnih modelov) ima dve komponenti:

  • RCMED (regionalna podatkovna baza za oceno podnebnih modelov):

To je razširljiva baza podatkov v oblaku, ki nalaga podatke o daljinskem zaznavanju in podatke o ponovni analizi, ki so povezani s podnebjem, z uporabo ekstraktorjev, kot so ekstraktorji Apache OODT, Apache Tika itd. Na koncu pa podatke pretvori kot model podatkovne točke, ki je v obliki (zemljepisna širina , zemljepisna dolžina, čas, vrednost, višina) in jo shrani v bazo podatkov My SQL. Naročnik lahko pridobi podatke, ki so prisotni v RCMED, tako da izvede poizvedbe Space / Time. Opis takšnih poizvedb za nas zdaj ni ustrezen.

  • RCMET (priročnik za ocenjevanje podnebnih modelov):

Uporabniku omogoča primerjavo referenčnih podatkov, ki so prisotni v RCMED, z izhodnimi podatki podnebnega modela, pridobljenimi iz nekaterih drugih virov, za izvajanje različnih vrst analiz in ocen. Za razumevanje arhitekture RCMES se lahko sklicujete na spodnjo sliko.

Referenčni podatki v RCMED prihajajo iz satelitskega daljinskega zaznavanja v skladu z različnimi parametri, potrebnimi za oceno podnebnega modela. Na primer - AIRS (Atmospheric Infrared Sounder) zagotavlja parametre, kot so temperatura površinskega zraka, temperatura in Geopotencial, TRMM (Tropical Rainfall Measurement Mission) zagotavlja mesečne padavine itd.

Težave, s katerimi se srečuje NASA pri uporabi sistema MySQL Database System:

  • Po nalaganju baze podatkov MySQL s 6 milijardami kopij obrazca (zemljepisna širina, dolžina, čas, vrednost podatkovne točke, višina) je sistem sesul, kot je prikazano na zgornji sliki.
  • Tudi po razdelitvi celotne tabele na manjše podnabore je sistem med obdelavo podatkov ustvaril ogromno režijskih stroškov.

Torej so potrebovali razširljivo rešitev, ki lahko shrani in obdela to ogromno količino podatkov z SQL, kot je zmožnost poizvedovanja. Nazadnje so se odločili za uporabo Apache Hive za premagovanje zgoraj navedenih težav.

Kako lahko Apache Hive reši težavo?

Zdaj pa poglejmo, katere funkcije so prepričale Nasino ekipo JPL, da je Apache Hive vključil kot sestavni del svoje strategije reševanja:

  • Ker Apache Hive deluje na vrhu Hadoopa, je prilagodljiv in lahko podatke obdeluje porazdeljeno in vzporedno.
  • Ponuja jezik poizvedb Hive, ki je podoben SQL-u in je zato enostaven za učenje.

Razporeditev panja:

Naslednja slika pojasnjuje RCMES Architect z integracijo Apache Hive:

Sl : Hive Tutorial - RCMES Architecture with Apache Hive

Zgornja slika prikazuje uvajanje panja apache v RCMES. Nasina ekipa je med uvajanjem Apache Hive naredila naslednje korake:

  • Hive so namestili z uporabo Cloudere in Apache Hadoop, kot je prikazano na zgornji sliki.
  • Za vnos podatkov v panj iz baze podatkov MySQL so uporabili Apache Sqoop.
  • Zavijalnik Apache OODT je ​​bil izveden za izvajanje poizvedb v Hive in pridobivanje podatkov nazaj v RCMET.

Začetna primerjalna opazovanja s panjem:

  • Sprva so v eno tabelo naložili 2,5 milijarde podatkovnih točk in izvedli poizvedbo štetja. Na primer Panj> izberite count (datapoint_id) iz dataPointa. Štetje vseh zapisov je trajalo 5-6 minut (15–17 minut za celotnih 6,8 milijarde zapisov).
  • Faza zmanjšanja je bila hitra, vendar je faza zemljevida trajala 95% celotnega časa obdelave. Uporabljali so šest ( 4x štirijedrni ) sistemi z 24 GB RAM-a (približno) v vsakem od sistemov.
  • Tudi po dodajanju več naprav spremenite velikost bloka HDFS (64 MB, 128 MB, 256 MB) in spremenite številne druge konfiguracijske spremenljivke (io.razvrsti.faktor, tj.razvrsti.mb), niso imeli velikega uspeha pri skrajšanju časa za dokončanje štetja.

Prispevki članov skupnosti panjev:

Na koncu so člani skupnosti Panj priskočili na pomoč in ponudili različne vpoglede za reševanje težav s svojimi trenutnimi implementacijami Panja:

globoka kopija vs plitva kopija java
  • Omenili so, da je hitrost branja HDFS približno 60 MB / s v primerjavi z 1 GB / s v primeru lokalnega diska, odvisno od omrežne zmogljivosti in delovne obremenitve NameNode.
  • Člani so to predlagali 16 zemljevidov se bodo v njihovem trenutnem sistemu ujemali z I / O izvedbo lokalne naloge, ki ni Hadoop.
  • Predlagali so tudi zmanjšanje razdeljena velikost za vsako preslikavo, da poveča številoodmape in tako zagotavlja več paralelizma.
  • Na koncu so jim člani skupnosti rekli uporaba števila (1) namesto da se sklicuje na štetje ( datapoint_id) . To je zato, ker v primeru štetja (1) ni referenčnega stolpca, zato med izvajanjem štetja ne pride do dekompresije in deserializacije.

Nazadnje je NASA uspela prilagoditi svojo skupino panjev njihovim pričakovanjem, tako da je upoštevala vse predloge članov skupnosti Hive. Zato so z zgoraj omenjenimi sistemskimi konfiguracijami lahko v samo 15 sekundah poizvedovali o milijardah vrstic.

Vadnica Apache Hive: Arhitektura panja in njeni sestavni deli

Naslednja slika opisuje arhitekturo panja in potek, v katerem je predložena poizvedbaPanjin končno obdelana z ogrodjem MapReduce:

Sl : Vadnica za panj - Arhitektura panja

Kot je prikazano na zgornji sliki, lahko panjsko arhitekturo razvrstimo v naslednje komponente:

  • Odjemalci panjev: Hive podpira aplikacije, napisane v mnogih jezikih, kot so Java, C ++, Python itd., Z uporabo gonilnikov JDBC, Thrift in ODBC. Tako lahko vedno napišemo odjemalsko aplikacijo panja, napisano v jeziku, ki si ga izberemo.
  • Panjske storitve: Apache Hive ponuja različne storitve, kot so CLI, spletni vmesnik itd., Za izvajanje poizvedb. Vsakega od njih bomo kmalu raziskali v tem blogu z vajami o panju.
  • Okvir obdelave in upravljanje virov: Interno,Hive uporablja ogrodje Hadoop MapReduce kot de facto motor za izvajanje poizvedb. je ločena tema sama po sebi, zato tukaj ni obravnavana.
  • Porazdeljeno skladišče: Ko je Hive nameščen na vrhu Hadoopa, za porazdeljeno shrambo uporablja osnovni HDFS. Lahko se sklicujete na Blog HDFS če želite izvedeti več o tem.

Zdaj pa raziščimo prvi dve glavni komponenti v panjski arhitekturi:

1. Odjemalci panjev:

Apache Hive podpira različne vrste odjemalskih aplikacij za izvajanje poizvedb v panju. Te stranke lahko razvrstimo v tri vrste:

  • Varčne stranke: Ker Hive strežnik temelji na Apache Thrift, lahko streže zahtevo iz tistega programskega jezika, ki podpira Thrift.
  • Naročniki JDBC: Hive aplikacijam Java omogoča povezavo z njim z gonilnikom JDBC, ki je definiran v razredu org.apache.hadoop.panj.jdbc.HiveDriver.
  • Odjemalci ODBC: Gonilnik HBC ODBC omogoča, da se aplikacije, ki podpirajo protokol ODBC, povežejo s Hive. (Tako kot gonilnik JDBC tudi gonilnik ODBC uporablja Thrift za komunikacijo s strežnikom Hive.)

2. Panjske storitve:

Panj ponuja številne storitve, kot je prikazano na zgornji sliki. Oglejmo si vsakega od njih:

  • Hive CLI (vmesnik ukazne vrstice): To je privzeta lupina, ki jo nudi panj, kjer lahko neposredno izvajate poizvedbe in ukaze v panju.
  • Spletni vmesniki Apache Hive: Poleg vmesnika ukazne vrstice ima Hive tudi spletni GUI za izvajanje poizvedb in ukazov Hive.
  • Hive Server: Hive strežnik je zgrajen na Apache Thrift, zato se imenuje tudi Thrift Server, ki različnim odjemalcem omogoča, da oddajo zahteve v Hive in pridobijo končni rezultat.
  • Apache Hive Driver: Odgovorna je za sprejemanje poizvedb, ki jih odjemalcu predloži prek vmesnikov CLI, spletnega uporabniškega vmesnika, Thrift, ODBC ali JDBC. Nato voznik pošlje poizvedbo prevajalniku, kjer s pomočjo sheme, ki je prisotna v metamateriju, poteka razčlenjevanje, preverjanje tipa in semantična analiza.. V naslednjem koraku se ustvari optimiziran logični načrt v obliki DAG (Directed Acyclic Graph) nalog za zmanjševanje zemljevidov in HDFS nalog. Končno izvršilni mehanizem izvaja te naloge po vrstnem redu odvisnosti s pomočjo Hadoop.
  • Metastore: Lahko misliš metastorekot osrednje repozitorij za shranjevanje vseh informacij o metapodatkih Hive. Metapodatki o panju vključujejo različne vrste informacij, kot so struktura tabel in particijskupaj s stolpcem, vrsto stolpca, serializatorjem in deserializatorjem, ki je potreben za operacijo branja / pisanja podatkov, prisotnih v HDFS. Metastoreobsega dve temeljni enoti:
    • Storitev, ki ponuja metastoredostop do drugerPanjske storitve.
    • Shramba diska za metapodatke, ki je ločena od shrambe HDFS.

Zdaj pa razumimo različne načine izvajanja Hive metastorev naslednjem razdelku te vaje za panj.

Vadnica za Apache Hive: Konfiguracija Metastore

Metastore shranjuje podatke o metapodatkih z uporabo RDBMS in odprtokodno plastjo ORM (objektni relacijski model), imenovano Data Nucleus, ki pretvori predstavitev predmeta v relacijsko shemo in obratno. Razlog za izbiro RDBMS namesto HDFS je doseganje nizke zakasnitve. Metastore lahko implementiramo v naslednjih treh konfiguracijah:

1. Vdelana metastora:

Storitev metastore in storitev Hive se privzeto izvajata v istem JVM z uporabo vdelanega primerka baze podatkov Derby, kjer so metapodatki shranjeni na lokalnem disku. To se imenuje vdelana konfiguracija metastorea. V tem primeru se lahko na bazo metastopov hkrati poveže le en uporabnik. Če zaženete drugi primerek gonilnika Hive, se prikaže napaka. To je dobro za enotno preskušanje, ne pa tudi za praktične rešitve.

2. Lokalna prodajalna:

Ta konfiguracija nam omogoča več sej Hive, tj. Več uporabnikov lahko hkrati uporablja zbirko podatkov metastore. To dosežemo z uporabo katere koli zbirke podatkov, skladne z JDBC, kot je MySQL, ki deluje v ločenem JVM ali na drugem računalniku, kot je storitev Hive in metastore, ki se izvajata v istem JVM, kot je prikazano zgoraj. Na splošno je najbolj priljubljena izbira strežnika MySQL kot baze podatkov metastore.

3. Oddaljena metastora:

V konfiguraciji oddaljene metastore se storitev metastore izvaja na svojem ločenem JVM in ne v JVM storitve Hive. Drugi procesi komunicirajo s strežnikom metastore z uporabo API-jev Thrift Network. V tem primeru lahko imate enega ali več strežnikov metastorov, da zagotovite večjo razpoložljivost.Glavna prednost uporabe oddaljene metastore je, da vam za dostop do baze podatkov metastore ni treba deliti poverilnic za prijavo JDBC z vsakim uporabnikom Hive.

Vadnica za Apache Hive: Podatkovni model

Podatke v panju lahko na zrnati ravni razvrstimo v tri vrste:

  • Tabela
  • Pregrada
  • Vedro

Tabele:

Tabele v Panju so enake tabelam v relacijski bazi podatkov. Na njih lahko izvajate operacije filtriranja, projektiranja, združevanja in združevanja. V Panju obstajata dve vrsti tabel:

1. Upravljana tabela:

Ukaz:

USTVARI TABELO (vrsta_podatka stolpec, vrsta_podatka stolpec2)

PRENOS DATA INPATH V tabelo upravljana_tabela

Kot že ime pove (upravljana tabela), je Hive odgovoren za upravljanje podatkov upravljane tabele. Z drugimi besedami, kar sem mislil, rekoč: »Panj upravlja s podatki«, je, da če podatke iz datoteke, ki je v HDFS, naložite v panj Upravljana tabela in na njem izdali ukaz DROP, tabela skupaj z njenimi metapodatki bo izbrisana. Torej, podatki, ki pripadajo izpuščenemu upravljana_tabela ne obstajajo več nikjer v HDFS in ga nikakor ne morete pridobiti. V bistvu podatke premaknete, ko izdate ukaz LOAD iz mesta datoteke HDFS v imenik skladišča Hive.

Opomba: Privzeta pot imenika skladišča je nastavljena na / user / hive / warehouse. Podatki tabele panj so v imeniku warehouse_directory / ime_tabele (HDFS). Pot imenika skladišča lahko določite tudi v konfiguracijskem parametru hive.metastore.warehouse.dir, ki je prisoten v hive-site.xml.

2. Zunanja tabela:

Ukaz:

USTVARI ZUNANJO TABELO (vrsta_podatka1, podatek-stolpec2) LOKACIJA ‘’

PRENOS PODATKOVNIH POTOV '' V MIZO

Za zunanja miza , Hive ni odgovoren za upravljanje podatkov. V tem primeru, ko izdate ukaz LOAD, Hive premakne podatke v svoj imenik skladišča. Nato Hive ustvari podatke o metapodatkih za zunanjo tabelo. Zdaj, če izdate ukaz DROP na zunanja miza , izbrisane bodo samo informacije o metapodatkih glede zunanje tabele. Zato lahko podatke te zunanje tabele še vedno pridobite iz imenika skladišča z ukazi HDFS.

Predelne stene:

Ukaz:

USTVARI TABELO ime_tabele (vrsta_podatkov stolpec1, vrsta_podatkov stolpec2) RAZDELLJENO (vrsta podatkov_predelka1, vrsta_podatkov particije2 in hellip)

Hive organizira tabele v particije za združevanje podobnih vrst podatkov na podlagi stolpca ali particijskega ključa. Vsaka tabela ima lahko enega ali več particijskih ključev za identifikacijo določene particije. To nam omogoča hitrejše poizvedovanje po rezinah podatkov.

Opomba: Ne pozabite, da je najpogostejša napaka pri ustvarjanju particij določitev imena obstoječega stolpca kot stolpca particije. Med tem boste prejeli napako - »Napaka pri semantični analizi: Stolpec se ponovi v stolpcih za razdelitev«.

Dovolite nam, da razumemo particijo, tako da vzamemo primer, kjer imam tabelo student_details, ki vsebuje informacije o študentu neke inženirske fakultete, kot je student_id, ime, oddelek, leto itd. ki pripadajo določenemu oddelku, bodo skupaj shranjeni prav v tej particiji. Fizično particija ni nič drugega kot podimenik v imeniku tabel.

Recimo, da imamo v tabeli student_details podatke za tri oddelke - CSE, ECE in Civil. Zato bomo imeli skupaj tri predelne stene za vsak oddelek, kot je prikazano na spodnji sliki. In za vsak oddelek bomo imeli vse podatke o tem oddelku, ki prebivajo v ločenem podimeniku pod imenikom tabel Panj. Na primer, vsi podatki o študentih v zvezi z oddelki za iskalno poizvedbo bodo shranjeni v user / hive / warehouse / student_details / dept. = CSE. Torej, poizvedbe v zvezi s študenti CSE bi si morale ogledati samo podatke, ki so na voljo v particiji CSE. Zaradi tega je particioniranje zelo uporabno, saj samo s skeniranjem zmanjša zakasnitev poizvedbe ustrezne namesto celotnega nabora podatkov. V resničnih izvedbah boste imeli opravka s stotimi TB podatkov. Torej, predstavljajte si, kako skenirate to ogromno količino podatkov za nekaj poizvedb 95% podatki, ki ste jih pregledali, niso bili ustrezni za vašo poizvedbo.

Predlagam vam, da greste skozi blog naprej Ukazi za panj kjer boste našli različne načine izvajanja particij s primerom.

Žlice:

Ukazi:

USTVARI TABELO ime_tabele RAZDELLJENO PO (particija1 vrsta_podatka, particija2 vrsta_podatka in hellip.) KLASIRANO PO (ime_ stolpca1, ime_ stolpca2,…) RAZREDJENO PO (ime stolpca [ASC | DESC], ...)] V ŠTEVILKE

Zdaj lahko vsako particijo ali nerazdeljeno tabelo razdelite v segmente na podlagi zgoščevalne funkcije stolpca v tabeli. Pravzaprav je vsak segment samo datoteka v imeniku particij ali imeniku tabel (nerazdeljena tabela). Če ste torej razdelili particije v n vedrov, boste imeli v vsakem imeniku particij n datotek. Na primer, lahko vidite zgornjo sliko, kjer smo vsako particijo strnili v dva vedra. Torej, vsaka particija, recimo CSE, bo imela dve datoteki, kjer bo vsaka shranila podatke študenta CSE.

Kako Hive razdeli vrstice v vedra?

No, Hive določi številko segmenta za vrstico s formulo: hash_function (bucketing_column) modulo (num_of_buckets) . Tukaj, hfunkcija pepela je odvisna od vrste podatkov stolpca. Če na primer razporejate tabelo na podlagi nekega stolpca, recimo user_id, vrste INT, bo funkcija hash_ - hash_function (user_id ) = celoštevilčna vrednost user_id . Recimo, da ste ustvarili dva vedra, potem bo Hive določil vrstice, ki gredo v vedro 1 na vsaki particiji, tako da izračuna: (vrednost user_id) modulo (2). V tem primeru bodo vrstice z imenom user_id, ki se končajo s celoštevilčno številko, v istem vedru, ki ustreza vsaki particiji. Funkcija hash_ za druge vrste podatkov je nekoliko zapletena za izračun, v resnici pa za niz niti ni človeško prepoznavna.

Opomba: Če uporabljate Apache Hive 0.x ali 1.x, morate pred izvajanjem segmentiranja izdati ukaz - nastavite hive.enforce.bucketing = true s svojega terminala Hive. To vam bo omogočilo pravilno število reduktorja med uporabo grozda po klavzuli za povezovanje stolpca v segmente. Če tega še niste storili, boste morda ugotovili, da število datotek, ustvarjenih v imeniku vaše tabele, ni enako številu segmentov. Kot alternativo lahko nastavite tudi število reduktorjev, ki je enako številu segmentov, tako da uporabite set mapred.reduce.task = num_bucket.

Zakaj potrebujemo vedra?

Obstajata dva glavna razloga za izvajanje segmentiranja particije:

  • TO zemljevid strani pridruži zahteva, da so podatki, ki pripadajo edinstvenemu ključu za združevanje, prisotni na isti particiji. Kaj pa tisti primeri, ko se vaš particijski ključ razlikuje od pridružitve? Zato lahko v teh primerih izvedete združevanje na strani zemljevida tako, da tabelo dodate v ključe z združevanjem.
  • Zaradi segmentiranja je postopek vzorčenja učinkovitejši in nam zato omogoča skrajšanje časa poizvedbe.

Tule bi rad zaključil ta blog o vajah za Hive. Prepričan sem, da bi po tem blogu o vajah Hive spoznali preprostost Apache Hive. Od takrat ste se naučili vseh osnov panj, skrajni čas je, da dobite nekaj izkušenj z Apache Hive. Oglejte si naslednji spletni dnevnik v tej blogovski seriji Hive Tutorial, ki govori o namestitvi Hive, in začnite delati na Apache Hive.

Zdaj, ko ste razumeli Apache Hive in njegove značilnosti, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Tečaj Edureka Big Data Hadoop Certification Training pomaga učencem, da postanejo strokovnjaki za HDFS, prejo, MapReduce, Pig, Hive, HBase, Oozie, Flume in Sqoop z uporabo primerov uporabe v realnem času na področju maloprodaje, družbenih medijev, letalstva, turizma in financ.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje in se vam bomo javili.