Hive Tutorial - Hive Architecture at NASA Case Study



Ang Hive tutorial blog na ito ay nagbibigay sa iyo ng malalim na kaalaman tungkol sa Hive Architecture at Hive Data Model. Ipinapaliwanag din nito ang pag-aaral ng kaso ng NASA sa Apache Hive.

Apache Hive Tutorial: Panimula

Ang pugad ay mahigpit na ginagamit na tool sa buong industriya para sa Big Data Analytics at isang mahusay na tool upang simulan ang iyong kasama si Sa Hive tutorial blog na ito, tatalakayin namin ang tungkol sa Apache Hive nang malalim. Ang Apache Hive ay isang tool sa pagbebenta ng data sa , na nagbibigay ng SQL tulad ng wika para sa pag-query at pag-aaral ng Big Data. Ang pagganyak sa likod ng pag-unlad ng Hive ay ang landas na hindi gaanong natututo para sa mga developer ng SQL at analisador. Ang pugad ay hindi lamang isang tagapagligtas para sa mga tao mula sa background na hindi pang-programa, ngunit binabawasan din nito ang gawain ng mga programmer na gumugol ng mahabang oras sa pagsulat ng mga programa ng MapReduce. Sa blog ng Apache Hive Tutorial na ito, pag-uusapan ko ang tungkol sa:





Apache Hive Tutorial: Ano ang Hive?

Ang Apache Hive ay isang sistema ng warehouse ng data na itinayo sa tuktok ng Hadoop at ginagamit para sa pagsusuri ng nakabalangkas at semi-nakabalangkas na data.Kinukuha ng pugad ang pagiging kumplikado ng Hadoop MapReduce. Karaniwan, nagbibigay ito ng isang mekanismo upang maitayo ang istraktura ng data at magsagawa ng mga query na nakasulat sa HQL (Hive Query Language) na katulad ng mga pahayag ng SQL. Sa panloob, ang mga query na ito o ang HQL ay nai-convert upang mapabawas ang mga trabaho sa pamamagitan ng tagatala ng Hive. Samakatuwid, hindi mo kailangang mag-alala tungkol sa pagsusulat ng mga kumplikadong programa ng MapReduce upang maproseso ang iyong data gamit ang Hadoop. Naka-target ito patungo sa mga gumagamit na komportable sa SQL. Sinusuportahan ng Apache Hive ang Data Definition Language (DDL), Data Manipulation Language (DML) at User Defined Function (UDF).

Hive Tutorial para sa Mga Nagsisimula | Pag-unawa sa Pugad Sa Lalim | Edureka



SQL + Hadoop MapReduce = HiveQL

Apache Hive Tutorial: Kwento ng Hive - mula sa Facebook hanggang Apache

Kaso Gumamit ng Facebook - Tutorial sa Hive - EdurekaFig : Hive Tutorial - Kaso sa paggamit ng Facebook

Mga Hamon sa Facebook: Exponential Growth of Data

Bago ang 2008, ang lahat ng imprastraktura ng pagpoproseso ng data sa Facebook ay itinayo sa paligid ng isang warehouse ng data batay sa komersyal na RDBMS. Ang mga imprastrakturang ito ay may sapat na kakayahan upang sapat na ang mga pangangailangan ng Facebook sa oras na iyon. Ngunit, habang ang data ay nagsimulang lumaki nang napakabilis, naging isang malaking hamon upang pamahalaan at maproseso ang napakalaking dataset. Ayon sa isang artikulo sa Facebook, ang data na na-scale mula sa isang data ng 15 TB na itinakda noong 2007 hanggang sa isang data ng 2 PB noong 2009. Gayundin, maraming mga produkto sa Facebook ang nagsasangkot ng pagtatasa ng data tulad ng Audience Insights, Facebook Lexicon, Facebook Ads, atbp. Kaya, sila kailangan ng isang nasusukat at matipid na solusyon upang makayanan ang problemang ito at, samakatuwid nagsimulang gamitin ang balangkas ng Hadoop.



pag-uri-uriin ang mga algorithm c ++

Demokratisasyon Hadoop - MapReduce

Ngunit, sa paglaki ng data, ang pagiging kumplikado ng mga Map-Reduce code ay lumago nang proporsyonal. Kaya, ang pagsasanay sa mga taong may background na hindi pang-programa upang sumulat ng mga programa ng MapReduce ay naging mahirap. Gayundin, para sa pagsasagawa ng simpleng pagsusuri ay kailangang magsulat ng isang daang linya ng MapReduce code. Dahil, ang SQL ay malawakang ginamit ng mga inhinyero at analista, kabilang ang Facebook, samakatuwid, ang paglalagay ng SQL sa tuktok ng Hadoop ay tila isang lohikal na paraan upang ma-access ang Hadoop sa mga gumagamit na may background sa SQL.

Samakatuwid, ang kakayahan ng SQL na sapat na para sa karamihan ng mga kinakailangang analitiko at ang kakayahang sumukat ng Hadoop ay nanganak Apache Hive na nagbibigay-daan upang maisagawa ang SQL tulad ng mga query sa data na naroroon sa HDFS. Nang maglaon, ang proyekto ng Hive ay bukas na nakuha noong Agosto '2008 ng Facebook at malayang magagamit bilang Apache Hive ngayon.

Ngayon, tingnan natin ang mga tampok o pakinabang ng Hive na ginagawang tanyag nito.

Apache Hive Tutorial: Mga kalamangan ng Hive

  • Kapaki-pakinabang para sa mga taong hindi nagmula sa isang background ng programa dahil inaalis nito ang pangangailangan na magsulat ng kumplikadong programa ng MapReduce.
  • Napapalawak at nasusukat upang makayanan ang lumalaking dami at iba`t ibang data, nang hindi nakakaapekto sa pagganap ng system.
  • Ito ay bilang isang mahusay na tool na ETL (Extract, Transform, Load).
  • Sinusuportahan ng Hive ang anumang aplikasyon ng client na nakasulat sa Java, PHP, Python, C ++ o Ruby sa pamamagitan ng paglalantad nito Thrift server . (Maaari mong gamitin ang mga wikang nasa panig ng client na naka-embed sa SQL para sa pag-access sa isang database tulad ng DB2, atbp.).
  • Tulad ng impormasyon ng metadata ng Hive na nakaimbak sa isang RDBMS, makabuluhang binabawasan nito ang oras upang magsagawa ng mga semantiko na tseke habang isinasagawa ang query.

Apache Hive Tutorial: Saan gagamitin ang Apache Hive?

Sinasamantala ng Apache Hive ang pareho ng mga mundo hal hal SQL Database System at balangkas Samakatuwid, ito ay ginagamit ng isang malawak na bilang ng mga kumpanya. Karamihan ito ay ginagamit para sa warehousing ng data kung saan maaari kang magsagawa ng analytics at pagmimina ng data na hindi nangangailangan ng pagproseso ng real time. Ang ilan sa mga patlang kung saan maaari mong gamitin ang Apache Hive ay ang mga sumusunod:

  • Pagbobodega ng Data
  • Pagsusuri sa ad-hoc

Tulad ng sinabi, hindi ka makakapalakpak gamit ang isang kamay lamang ibig sabihin Hindi mo malulutas ang bawat problema sa isang solong tool. Samakatuwid, maaari mong ikasal ang Hive sa iba pang mga tool upang magamit ito sa maraming iba pang mga domain. Halimbawa, ang Tableau kasama ang Apache Hive ay maaaring magamit para sa Data Visualization, ang Apache Tez na pagsasama sa Hive ay magbibigay sa iyo ng mga kakayahan sa pagproseso ng real time, atbp.
Patuloy sa blog ng Apache Hive Tutorial na ito, tingnan natin sa isang pag-aaral ng kaso ng NASA kung saan malalaman mo kung paano nalutas ng Hive ang problemang kinakaharap ng mga siyentista ng NASA habang nagsasagawa ng pagsusuri ng Mga Modelong Klima.

Tutorial sa Hive: Pag-aaral ng Kaso ng NASA

Ang isang modelo ng klima ay isang representasyong matematika ng mga sistema ng klima batay sa iba`t ibang mga kadahilanan na nakakaapekto sa klima ng Daigdig. Karaniwan, inilalarawan nito ang pakikipag-ugnay ng iba't ibang mga driver ng klima tulad ng karagatan, araw, himpapawid, atbpmagbigay ng isang pananaw sa mga dinamika ng sistema ng klima. Ginagamit ito upang i-proyekto ang mga kondisyon ng klima sa pamamagitan ng pagtulad sa mga pagbabago sa klima batay sa mga salik na nakakaapekto sa klima. Ang Jet Propulsion Laboratory ng NASA ay bumuo ng Regional Climate Model Evaluation System (RCMES) para sa pagsusuri at pagsusuri ng modelo ng output ng klima laban sa data ng remote sensing na naroroon sa iba't ibang mga panlabas na repository.

Ang RCMES (Regional Climate Model Evaluation System) ay may dalawang bahagi:

  • RCMED (Database ng Pagsusuri sa Modelong Pangkalahat ng Klima):

Ito ay isang nasusukat na cloud database na naglo-load ng data ng remote sensing at data ng reanalysis na nauugnay sa klima gamit ang mga extractor tulad ng Apache OODT extractors, Apache Tika, atbp Panghuli, binabago nito ang data bilang modelo ng point point ng data na form (latitude , longitude, oras, halaga, taas) at iniimbak ito sa My SQL database. Maaaring makuha ng kliyente ang data na naroroon sa RCMED sa pamamagitan ng pagsasagawa ng mga query sa Space / Oras. Ang paglalarawan ng mga nasabing query ay hindi nauugnay sa amin ngayon.

  • RCMET (Regional Climate Model Model Evaluation Toolkit):

Nagbibigay ito sa gumagamit ng kakayahang ihambing ang data ng sanggunian na naroroon sa RCMED kasama ang data ng output ng modelo ng klima na nakuha mula sa ilang iba pang mga mapagkukunan upang maisagawa ang iba't ibang mga uri ng pagsusuri at pagsusuri. Maaari kang mag-refer sa imaheng ibinigay sa ibaba upang maunawaan ang arkitektura ng RCMES.

Ang data ng sanggunian sa RCMED ay nagmula sa satellite-based remote sensing, ayon sa iba't ibang mga parameter na kinakailangan para sa pagsusuri ng modelo ng klima. Halimbawa - Ang AIRS (Atmospheric Infrared Sounder) ay nagbibigay ng mga parameter tulad ng temperatura sa ibabaw ng hangin, temperatura at Geopotential, ang TRMM (Tropical Rainfall Measurement Mission) ay nagbibigay ng buwanang ulan, atbp.

Ang mga problemang kinakaharap ng NASA gamit ang MySQL Database System:

  • Matapos mai-load ang MySQL database na may 6 bilyong tuple ng form (latitude, longitude, time, data point value, taas), nag-crash ang system tulad ng ipinakita sa imahe sa itaas.
  • Kahit na pagkatapos hatiin ang buong talahanayan sa mas maliit na mga subset, ang system ay nakabuo ng malaking overhead habang pinoproseso ang data.

Kaya, kailangan nila ng isang nasusukat na solusyon na maaaring mag-imbak at maproseso ang napakalaking bilang ng data na may SQL tulad ng kakayahan sa pag-query. Sa wakas, nagpasya silang gamitin ang Apache Hive upang mapagtagumpayan ang mga problemang nakasaad sa itaas.

Paano malulutas ng Apache Hive ang problema?

Ngayon, tingnan natin, ano ang mga tampok na nakakumbinsi sa koponan ng JPL ng NASA na isama ang Apache Hive bilang isang mahalagang bahagi sa kanilang diskarte sa solusyon:

  • Dahil, tumatakbo ang Apache Hive sa tuktok ng Hadoop, nasusukat ito at maaaring magproseso ng data sa isang ipinamamahagi at parallel na paraan.
  • Nagbibigay ito ng Hive Query Language na katulad sa SQL at kung gayon madaling matuto.

Pag-deploy ng Hive:

Ipinapaliwanag ng sumusunod na imahe ang RCMES Architect na may Apache Hive na pagsasama:

Fig : Hive Tutorial - RCMES Architecture na may Apache Hive

Ipinapakita ng imahe sa itaas ang pag-deploy ng apache hive sa RCMES. Ang mga sumusunod na hakbang ay ginawa ng koponan ng NASA habang inilalagay ang Apache Hive:

  • In-install nila ang Hive gamit ang Cloudera at Apache Hadoop tulad ng ipinakita sa larawan sa itaas.
  • Ginamit nila ang Apache Sqoop upang i-ingest ang data sa Hive mula sa MySQL database.
  • Ang Apache OODT wrapper ay ipinatupad upang maisagawa ang mga query sa Hive at kunin ang data pabalik sa RCMET.

Paunang Mga Pagmamasid sa Benchmarking sa Hive:

  • Sa una ay na-load nila ang 2.5 bilyong mga puntos ng data sa isang solong talahanayan at nagsagawa ng isang query sa bilang. Halimbawa, Hive> piliin ang bilang (datapoint_id) mula sa dataPoint. Tumagal ng 5-6 minuto upang mabilang ang lahat ng mga tala (15-17 minuto para sa buong 6.8 bilyong talaan).
  • Ang pagbawas ng yugto ay mabilis, ngunit ang yugto ng mapa ay tumagal ng 95% ng kabuuang oras ng pagproseso. Gumagamit sila ng anim ( 4x quad-core ) mga system na may 24 GB RAM (tantiya.) sa bawat isa sa mga system.
  • Kahit na pagkatapos ng pagdaragdag ng higit pang mga machine, binabago ang laki ng HDFS block (64 MB, 128 MB, 256 MB) at binabago ang maraming iba pang mga variable ng pagsasaayos (io.pag-uri-uriin.factor, i.pag-uri-uriin.mb), hindi sila nakakuha ng maraming tagumpay sa pagbabawas ng oras upang makumpleto ang bilang.

Mga input mula sa Mga Miyembro ng Pamayanan ng Hive:

Sa wakas, ang mga miyembro ng pamayanan ng Hive ay sumagip at nagbigay ng iba't ibang pananaw upang malutas ang mga isyu sa kanilang kasalukuyang pagpapatupad ng Hive:

  • Nabanggit nila na ang bilis ng basahin ang HDFS ay humigit-kumulang 60 MB / s kumpara sa 1GB / s sa kaso ng isang lokal na disc, depende sa kapasidad ng network at workload sa NameNode.
  • Iminungkahi ng mga miyembro na 16 mappers ay kinakailangan sa kanilang kasalukuyang sistema upang tumugma sa pagganap ng I / O ng isang lokal na gawain na hindi Hadoop.
  • Iminungkahi din nila na bawasan ang split-size para sa bawat mapper upang madagdagan ang bilangngmappers at samakatuwid, na nagbibigay ng higit pang parallelism.
  • Sa wakas, sinabi sa kanila ng mga kasapi ng komunidad na gamitin ang bilang (1) sa halip na mag-refer sa bilangin ( datapoint_id) . Ito ay dahil sa kaso ng bilang (1), walang haligi ng sanggunian at samakatuwid, walang decompression at deserialization na nagaganap habang isinasagawa ang bilang.

Sa wakas, nagawa ng NASA ang kanilang Hive cluster hanggang sa kanilang mga inaasahan sa pamamagitan ng pagsasaalang-alang sa lahat ng mga mungkahi na ibinigay ng mga miyembro ng komunidad ng Hive. At samakatuwid, nakapagtanong sila ng bilyun-bilyong mga hilera sa loob lamang ng 15 segundo gamit ang mga pagsasaayos ng system na nabanggit sa itaas.

Apache Hive Tutorial: Hive Architecture at mga Bahagi nito

Inilalarawan ng sumusunod na imahe ang Hive Architecture at ang daloy kung saan isinumite ang isang queryPugadat sa wakas naproseso gamit ang balangkas ng MapReduce:

Fig : Hive Tutorial - Hive Architecture

Tulad ng ipinakita sa imahe sa itaas, ang Hive Architecture ay maaaring mai-kategorya sa mga sumusunod na sangkap:

  • Mga kliyente sa pugad: Sinusuportahan ng Hive ang application na nakasulat sa maraming mga wika tulad ng Java, C ++, Python atbp gamit ang mga driver ng JDBC, Thrift at ODBC. Samakatuwid ang isa ay maaaring palaging magsulat ng pugad client application na nakasulat sa isang wika na kanilang pinili.
  • Mga Serbisyo sa Pugad: Nagbibigay ang Apache Hive ng iba't ibang mga serbisyo tulad ng CLI, Web Interface atbp upang magsagawa ng mga query. Kami ay galugarin ang bawat isa sa kanila sa ilang sandali sa Hive tutorial blog.
  • Balangkas sa pagpoproseso at Pamamahala ng Mapagkukunan: Panloob,Gumagamit ang Hive ng balangkas ng Hadoop MapReduce bilang de facto engine upang maipatupad ang mga query. ay isang hiwalay na paksa sa kanyang sarili at samakatuwid, ay hindi tinalakay dito.
  • Ipinamahaging Imbakan: Tulad ng pag-install ng Hive sa tuktok ng Hadoop, ginagamit nito ang napapailalim na HDFS para sa ipinamahaging imbakan. Maaari kang sumangguni sa HDFS blog upang malaman ang tungkol dito.

Ngayon, tuklasin natin ang unang dalawang pangunahing sangkap sa Hive Architecture:

1. Mga kliyente sa pugad:

Sinusuportahan ng Apache Hive ang iba't ibang uri ng mga aplikasyon ng client para sa pagsasagawa ng mga query sa Hive. Ang mga kliyente na ito ay maaaring ikinategorya sa tatlong uri:

  • Mga Thrift Client: Tulad ng server ng Hive ay nakabatay sa Apache Thrift, maaari nitong ihatid ang kahilingan mula sa lahat ng wikang nasa programa na sumusuporta sa Thrift.
  • Mga kliyente ng JDBC: Pinapayagan ng Hive ang mga application ng Java na kumonekta dito gamit ang driver ng JDBC na tinukoy sa klase ng org.apache.hadoop.pugad.jdbc.HiveDriver.
  • Mga kliyente ng ODBC: Pinapayagan ng Hive ODBC Driver ang mga application na sumusuporta sa ODBC protocol upang kumonekta sa Hive. (Tulad ng driver ng JDBC, ang driver ng ODBC ay gumagamit ng Thrift upang makipag-usap sa Hive server.)

2. Mga Serbisyo sa Pugad:

Nagbibigay ang Hive ng maraming mga serbisyo tulad ng ipinakita sa imahe sa itaas. Tingnan natin ang bawat isa sa kanila:

  • Hive CLI (Command Line Interface): Ito ang default na shell na ibinigay ng Hive kung saan maaari mong maisagawa nang direkta ang iyong mga query sa Hive at utos.
  • Apache Hive Web Interfaces: Bukod sa interface ng command line, nagbibigay din ang Hive ng isang batay sa web na GUI para sa pagpapatupad ng mga query at utos ng Hive.
  • Hive Server: Ang Hive server ay itinayo sa Apache Thrift at samakatuwid, ay tinukoy din bilang Thrift Server na nagpapahintulot sa iba't ibang mga kliyente na magsumite ng mga kahilingan sa Hive at kunin ang pangwakas na resulta.
  • Apache Hive Driver: Responsable ito para sa pagtanggap ng mga query na isinumite sa pamamagitan ng mga interface ng CLI, web UI, Thrift, ODBC o JDBC ng isang client. Pagkatapos, ipinapasa ng driver ang query sa tagatala kung saan nagaganap ang pag-parse, pag-type ng pagsusuri at pag-aaral ng semantiko sa tulong ng schema na naroroon sa metastore. Sa susunod na hakbang, isang na-optimize na lohikal na plano ay nabuo sa anyo ng isang DAG (Directed Acyclic Graph) ng mga gawain na mapabawas sa mapa at mga gawain ng HDFS. Sa wakas, isinasagawa ng engine ng pagpapatupad ang mga gawaing ito sa pagkakasunud-sunod ng kanilang mga dependency, gamit ang Hadoop.
  • Metastore: Maaari mong isipin ang metastorebilang isang gitnang imbakan para sa pagtatago ng lahat ng impormasyon ng Hive metadata. Kasama sa pamamantalaan ng metadata ang iba't ibang mga uri ng impormasyon tulad ng istraktura ng mga talahanayan at mga pagkahatikasama ang haligi, uri ng haligi, serializer at deserializer na kinakailangan para sa Basahin / Isulat na operasyon ang data na naroroon sa HDFS. Ang metastorebinubuo ng dalawang pangunahing mga yunit:
    • Isang serbisyo na nagbibigay ng metastorepag-access sa otherMga serbisyo sa pugad.
    • Imbakan ng disk para sa metadata na hiwalay sa imbakan ng HDFS.

Ngayon, maunawaan natin ang iba't ibang mga paraan ng pagpapatupad ng Hive metastoresa susunod na seksyon ng Hive Tutorial na ito.

Apache Hive Tutorial: Pag-configure ng Metastore

Iniimbak ng Metastore ang impormasyon ng data ng meta gamit ang RDBMS at isang bukas na mapagkukunan na ORM (Model Relational Model) na layer na tinatawag na Data Nucleus na kinokonekta ang representasyon ng bagay sa relational schema at kabaliktaran. Ang dahilan para sa pagpili ng RDBMS sa halip na HDFS ay upang makamit ang mababang latency. Maaari naming ipatupad ang metastore sa pagsunod sa tatlong mga pagsasaayos:

1. Naka-embed na Metastore:

Parehong ang serbisyo ng metastore at ang serbisyo ng Hive ay tumatakbo sa parehong JVM bilang default gamit ang isang naka-embed na halimbawa ng Derby Database kung saan ang metadata ay nakaimbak sa lokal na disk. Tinatawag itong naka-embed na pagsasaayos ng metastore. Sa kasong ito, isang gumagamit lamang ang maaaring kumonekta sa metastore database nang paisa-isa. Kung sinimulan mo ang isang pangalawang halimbawa ng Hive driver, makakakuha ka ng isang error. Mabuti ito para sa pagsubok sa yunit, ngunit hindi para sa mga praktikal na solusyon.

2. Lokal na Metastore:

Pinapayagan kami ng pagsasaayos na ito na magkaroon ng maraming mga session ng Hive ibig sabihin, Maramihang mga gumagamit ang maaaring gumamit ng metastore database nang sabay. Nakamit ito sa pamamagitan ng paggamit ng anumang sumusunod na database ng JDBC tulad ng MySQL na tumatakbo sa isang hiwalay na JVM o ibang machine kaysa sa serbisyo ng Hive at serbisyo sa metastore na tumatakbo sa parehong JVM tulad ng ipinakita sa itaas. Sa pangkalahatan, ang pinakapopular na pagpipilian ay ang magpatupad ng isang MySQL server bilang metastore database.

3. Remote Metastore:

Sa remote na pagsasaayos ng metastore, ang serbisyo ng metastore ay tumatakbo sa sarili nitong hiwalay na JVM at hindi sa loob ng serbisyo ng Hive na JVM. Ang iba pang mga proseso ay nakikipag-usap sa server ng metastore gamit ang mga Thrift Network API. Maaari kang magkaroon ng isa o higit pang mga server ng metastore sa kasong ito upang makapagbigay ng higit na kakayahang magamit.Ang pangunahing bentahe ng paggamit ng remote metastore ay hindi mo kailangang ibahagi ang kredensyal sa pag-login ng JDBC sa bawat gumagamit ng Hive upang ma-access ang database ng metastore.

Apache Hive Tutorial: Model ng Data

Ang data sa Hive ay maaaring ikinategorya sa tatlong uri sa antas ng butil:

  • Talahanayan
  • Paghati
  • Balde

Mga Talahanayan:

Ang mga talahanayan sa Hive ay pareho ng mga talahanayan na naroroon sa isang Relational Database. Maaari kang magsagawa ng mga pagpapatakbo ng filter, proyekto, sumali at pag-unyon sa kanila. Mayroong dalawang uri ng mga talahanayan sa Hive:

1. Pinamamahalaang Talahanayan:

Utos:

GUMAWA NG TABLE (haligi1 data_type, haligi2 data_type)

LOAD DATA INPATH SA talahanayan na pinamamahalaang_takda

Tulad ng ipahiwatig ng pangalan (pinamamahalaang talahanayan), responsable ang Hive para sa pamamahala ng data ng isang pinamamahalaang talahanayan. Sa madaling salita, ang ibig kong sabihin sa pagsasabing, 'Pinangangasiwaan ng Hive ang data', ay kung mai-load mo ang data mula sa isang file na naroroon sa HDFS sa isang Hive Pinamamahalaang Talahanayan at maglabas ng isang utos ng DROP dito, tatanggalin ang talahanayan kasama ang metadata nito. Kaya, ang data na kabilang sa bumagsak napangasiwaan_ wala na kahit saan saanman sa HDFS at hindi mo ito maaaring makuha sa anumang paraan. Talaga, inililipat mo ang data kapag naglabas ka ng utos ng LOAD mula sa lokasyon ng file ng HDFS patungo sa direktoryo ng bodega ng Hive.

Tandaan: Ang default na landas ng direktoryo ng warehouse ay nakatakda sa / user / hive / warehouse. Ang data ng isang table ng Hive ay naninirahan sa warehouse_directory / table_name (HDFS). Maaari mo ring tukuyin ang landas ng direktoryo ng warehouse sa hive.metastore.warehouse.dir parameter ng pagsasaayos na naroroon sa hive-site.xml.

2. Panlabas na Talahanayan:

Utos:

GUMAWA NG LABING PANG-EKLAL (talahanayan1 data_type, haligi2 data_type) LOCATION ‘’

LOAD DATA INPATH ‘’ SA TABLE

Para kay panlabas na mesa , Ang Hive ay hindi responsable para sa pamamahala ng data. Sa kasong ito, kapag naglabas ka ng utos ng LOAD, inililipat ng Hive ang data sa direktoryo ng warehouse nito. Pagkatapos, lumilikha ang Hive ng impormasyon ng metadata para sa panlabas na talahanayan. Ngayon, kung naglabas ka ng isang DROP command sa panlabas na mesa , ang impormasyon lamang sa metadata tungkol sa panlabas na talahanayan ang tatanggalin. Samakatuwid, maaari mo pa ring ibalik ang data ng mismong panlabas na talahanayan mula sa direktoryo ng warehouse gamit ang mga utos ng HDFS.

Mga partisyon:

Utos:

GUMAWA NG TABLE table_name (haligi1 data_type, haligi2 data_type) HINAHIHIYA NG (partition1 data_type, pagkahati2 data_type, at hellip.)

Inaayos ng Hive ang mga talahanayan sa mga partisyon para sa pagpapangkat ng magkatulad na uri ng data nang magkasama batay sa isang haligi o key ng pagkahati. Ang bawat Talahanayan ay maaaring magkaroon ng isa o higit pang mga key ng pagkahati upang makilala ang isang partikular na pagkahati. Pinapayagan kaming magkaroon ng isang mas mabilis na query sa mga hiwa ng data.

Tandaan: Tandaan, ang pinakakaraniwang pagkakamali na nagawa habang lumilikha ng mga pagkahati ay upang tukuyin ang isang mayroon nang pangalan ng haligi bilang isang haligi ng pagkahati. Habang ginagawa ito, makakatanggap ka ng isang error - 'Error sa pag-aaral ng semantiko: Inulit ang haligi sa mga haligi ng paghati'.

Ipaunawa sa amin ang pagkahati sa pamamagitan ng pagkuha ng isang halimbawa kung saan mayroon akong isang table_mga detalye ng mag-aaral na naglalaman ng impormasyon ng mag-aaral ng ilang engineering college tulad ng student_id, pangalan, departamento, taon, atbp Ngayon, kung gagawa ako ng pagkahati batay sa haligi ng departamento, ang impormasyon ng lahat ng mga mag-aaral na kabilang sa isang partikular na departamento ay maiimbak nang sama-sama sa partisyon na iyon. Pisikal, ang isang pagkahati ay walang iba kundi isang sub-direktoryo sa direktoryo ng talahanayan.

Sabihin nating mayroon tayong data para sa tatlong kagawaran sa aming talahanayan ng mga mag-aaral - CSE, ECE at Sibil. Samakatuwid, magkakaroon kami ng tatlong mga partisyon sa kabuuan para sa bawat departamento tulad ng ipinakita sa imahe sa ibaba. At, para sa bawat departamento magkakaroon kami ng lahat ng data tungkol sa mismong departamento na naninirahan sa isang hiwalay na sub - direktoryo sa ilalim ng direktoryo ng Hive table. Halimbawa, ang lahat ng data ng mag-aaral hinggil sa mga kagawaran ng CSE ay maiimbak sa user / hive / warehouse / student_details / dept. = CSE. Kaya, ang mga query tungkol sa mga mag-aaral ng CSE ay dapat lamang tumingin sa pamamagitan ng data na naroroon sa pagkahati ng CSE. Ginagawa nitong napaka kapaki-pakinabang ang pagkahati dahil binabawasan nito ang latency ng query sa pamamagitan lamang ng pag-scan may kaugnayan nahahati na data sa halip na ang buong hanay ng data. Sa katunayan, sa totoong pagpapatupad ng mundo, makitungo ka sa daan-daang mga TB ng data. Kaya, isipin ang pag-scan ng malaking bilang ng data para sa ilang query kung saan 95% ang data na na-scan mo ay hindi nauugnay sa iyong query.

Iminumungkahi ko sa iyo na dumaan sa blog sa Mga utos ng pugad kung saan makikita mo ang iba't ibang mga paraan ng pagpapatupad ng mga pagkahati sa isang halimbawa.

Mga timba:

Mga Utos:

GUMAWA NG TABLE table_name NA HINAHAHI NG (partition1 data_type, partition2 data_type, & hellip.) NAKASANI NG (haligi_name1, haligi_name2,…) PINAGSUSURI NG (haligi_name [ASC | DESC],…)] SA mga num_bucket na BUCKETS

Ngayon, maaari mong hatiin ang bawat pagkahati o ang hindi nakabahaging talahanayan sa mga Balde batay sa pag-andar ng hash ng isang haligi sa talahanayan. Sa totoo lang, ang bawat balde ay isang file lamang sa direktoryo ng pagkahati o ang direktoryo ng talahanayan (talahanayan na hindi nahati). Samakatuwid, kung pinili mo upang hatiin ang mga pagkahati sa mga n bucket, magkakaroon ka ng mga n file sa bawat isa sa iyong direktoryo ng pagkahati. Halimbawa, maaari mong makita ang imahe sa itaas kung saan namin na-bucket ang bawat pagkahati sa 2 mga timba. Kaya, ang bawat pagkahati, sabi ng CSE, ay magkakaroon ng dalawang mga file kung saan ang bawat isa sa kanila ay itatabi ang data ng mag-aaral ng CSE.

Paano namamahagi ang Hive ng mga row sa mga timba?

Kaya, tinutukoy ng Hive ang numero ng bucket para sa isang hilera sa pamamagitan ng paggamit ng formula: hash_unction (bucketing_column) modulo (num_of_buckets) . Narito, hnakasalalay ang ash_unction sa uri ng data ng haligi. Halimbawa, kung pinapalabas mo ang talahanayan batay sa ilang haligi, sabihin nating ang user_id, ng INT datatype, ang hash_unction ay - hash_unction (user_id ) = halaga ng integer ng user_id . At, ipagpalagay na lumikha ka ng dalawang mga balde, pagkatapos ay matutukoy ng Hive ang mga hilera na pupunta sa bucket 1 sa bawat pagkahati sa pamamagitan ng pagkalkula ng: (halaga ng user_id) modulo (2). Samakatuwid, sa kasong ito, ang mga hilera na mayroong user_id na nagtatapos sa isang kahit na integer digit ay manatili sa isang parehong balde na naaayon sa bawat pagkahati. Ang hash_unction para sa iba pang mga uri ng data ay medyo kumplikado upang makalkula at sa katunayan, para sa isang string na ito ay hindi kahit na makilala ng tao.

Tandaan: Kung gumagamit ka ng Apache Hive 0.x o 1.x, kailangan mong maglabas ng utos - itakda ang hive.enforce.bucketing = totoo mula sa iyong terminal ng Hive bago magsagawa ng pag-bucket. Papayagan ka nitong magkaroon ng tamang bilang ng reducer habang gumagamit ng kumpol sa pamamagitan ng sugnay para sa pag-bucket ng isang haligi. Kung sakaling hindi mo nagawa ito, maaari mong makita ang bilang ng mga file na nabuo sa iyong direktoryo ng talahanayan na hindi katumbas ng bilang ng mga timba. Bilang kahalili, maaari mo ring itakda ang bilang ng mga reducer na katumbas ng bilang ng mga timba sa pamamagitan ng paggamit ng itinakdang mapred.reduce.task = num_bucket.

Bakit kailangan natin ng mga balde?

Mayroong dalawang pangunahing mga kadahilanan para sa pagganap ng pag-bucket sa isang pagkahati:

  • SA bahagi ng mapa sumali nangangailangan ng data na kabilang sa isang natatanging susi ng pagsali na naroroon sa parehong pagkahati. Ngunit paano ang mga kasong iyon kung saan naiiba ang iyong partition key mula sa pagsali? Samakatuwid, sa mga kasong ito maaari kang magsagawa ng isang panig sa mapa na sumali sa pamamagitan ng pag-bucket ng talahanayan gamit ang key na sumali.
  • Ginagawa ng pag-bucket ang proseso ng pag-sample na mas mahusay at samakatuwid, pinapayagan kaming bawasan ang oras ng query.

Nais kong tapusin ang blog ng tutorial na Hive dito. Sigurado akong sigurado pagkatapos dumaan sa Hive tutorial blog na ito, malalaman mo ang pagiging simple ng Apache Hive. Dahil, natutunan mo ang lahat ng mga pangunahing kaalaman sa Hive, oras na upang magkaroon ng kaunting karanasan sa Apache Hive. Kaya, suriin ang susunod na blog sa seryeng blog ng Hive Tutorial na kung saan ay nasa pag-install ng Hive at simulang magtrabaho sa Apache Hive.

Ngayon na naintindihan mo ang Apache Hive at ang mga tampok nito, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Ang kurso sa Edureka Big Data Hadoop Certification Training ay tumutulong sa mga nag-aaral na maging dalubhasa sa HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume at Sqoop na gumagamit ng mga kaso ng paggamit ng real-time sa Retail, Social Media, Aviation, Turismo, Pananalapi domain.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento at babalikan ka namin.