扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)之Hive基礎(chǔ)知識(shí)精華講解
2018-09-17 14:35:12
1215瀏覽
今天扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)老師給大家技術(shù)介紹一下關(guān)于Hive的一些基礎(chǔ)知識(shí),首先Hive作為數(shù)據(jù)倉庫,起源于Facebook,工作原理大致可以解釋為:對(duì)用戶輸入的HQL語句進(jìn)行解釋,編譯,優(yōu)化并執(zhí)行生成查詢計(jì)劃,并轉(zhuǎn)化為MapReduce任務(wù)進(jìn)而執(zhí)行:解釋器——編譯器——優(yōu)化器——執(zhí)行器。
Hive的元數(shù)據(jù)一般存儲(chǔ)在關(guān)系型數(shù)據(jù)庫中,如MySql;
底層存儲(chǔ)用到的是HDFS分布式存儲(chǔ)系統(tǒng)。它的優(yōu)點(diǎn):1.?簡(jiǎn)單易上手:提供了類SQL查詢語言HQL;2.可擴(kuò)展:為超大數(shù)據(jù)集設(shè)計(jì)了計(jì)算/擴(kuò)展能力(MR作為計(jì)算引擎,HDFS作為存儲(chǔ)系統(tǒng));3.提供統(tǒng)一的元數(shù)據(jù)管理;4.Hive支持用戶自定義函數(shù),用戶可以根據(jù)自己的需求來實(shí)現(xiàn)自己的函數(shù):繼承hive的UDF類,重寫evaluate方法;5.容錯(cuò):良好的容錯(cuò)性,節(jié)點(diǎn)出現(xiàn)問題SQL仍可完成執(zhí)行;
缺點(diǎn):1.Hive的HQL表達(dá)能力有限;2.效率比較低,自動(dòng)生成的Mapreduce作業(yè),通常情況下不夠智能化,且調(diào)優(yōu)比較困難;
Hive用戶接口
1)HiveCLI(HiveCommandLine,Hive命令行),客戶端可以直接在命令行模式下進(jìn)行操作
2)HWI(HiveWebInterface,HiveWeb接口),Hive提供了更直觀的Web界面
3)hiveserver,Hive提供了Thrift服務(wù),Thrift客戶端目前支持C++/Java/PHP/Python/Ruby
Hive常用文件格式:
Textfile:默認(rèn)格式,數(shù)據(jù)不做壓縮,磁盤開銷大,數(shù)據(jù)解析開銷大;
SEQUENCEFILE:SequenceFile是HadoopAPI提供的一種二進(jìn)制文件支持,其具有使用方便、可分割、可壓縮的特點(diǎn);
rcfile:RCFILE是一種行列存儲(chǔ)相結(jié)合的存儲(chǔ)方式。首先,其將數(shù)據(jù)按行分塊,保證同一個(gè)record在一個(gè)塊上,避免讀一個(gè)記錄需要讀取多個(gè)block。其次,塊數(shù)據(jù)列式存儲(chǔ),有利于數(shù)據(jù)壓縮和快速的列存取;
parquet:ApacheParquet是Hadoop生態(tài)圈中一種新型列式存儲(chǔ)格式,它可以兼容Hadoop生態(tài)圈中大多數(shù)計(jì)算框架;
Hive數(shù)據(jù)導(dǎo)入導(dǎo)出
Hive表中的數(shù)據(jù),同時(shí)支持從本地?cái)?shù)據(jù)導(dǎo)入、從其他表導(dǎo)入數(shù)據(jù)、導(dǎo)出數(shù)據(jù)到本地文件系統(tǒng)、導(dǎo)出數(shù)據(jù)到HDFS中
Hive基本語句
Hive建表語句基本跟關(guān)系型數(shù)據(jù)庫建表語句相同,區(qū)別在于語句尾端指定了列分隔符:
ROWFORMATDELIMITEDFIELDSTERMINATEDBY‘,’
指定了列分隔符為“,”;
對(duì)于分區(qū)表,會(huì)有分區(qū)字段的說明:
PARTITIONEDBY(countrySTRING,stateSTRING)
用“country“、”state”兩個(gè)字段分區(qū);
以及指定存儲(chǔ)文件的格式:
STOREDASTEXTFILE。
關(guān)于內(nèi)連接、外連接和半連接:
幾種連接區(qū)別簡(jiǎn)單概括為:內(nèi)連接只顯示了倆張表都存在的數(shù)據(jù),而外連接則是顯示出所有的數(shù)據(jù),其中左連接是左外邊的表輸出完整數(shù)據(jù)。右外連接是右邊的表輸出完整數(shù)據(jù),全外連接就是兩張表的所有行全部輸出。做半連接用來補(bǔ)充Hive相對(duì)于MySQL等語句缺失的in/exists這樣的子句,就用leftjoin代替,和leftjoin的區(qū)別在于右邊的表數(shù)據(jù)不會(huì)加載進(jìn)結(jié)果;
orderby和sortby:
ORDERBY會(huì)對(duì)查詢結(jié)果集執(zhí)行一個(gè)全局排序,所有的數(shù)據(jù)都通過一個(gè)reducer進(jìn)行處理;SORTBY,其只會(huì)在每個(gè)reducer中對(duì)數(shù)據(jù)進(jìn)行排序,也就是執(zhí)行一個(gè)局部排序過程,生產(chǎn)中可以和DISTRIBUTEBY一起用,實(shí)現(xiàn)分區(qū)并排序。
以上就是關(guān)于扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)之Hive基礎(chǔ)知識(shí)精華的詳細(xì)介紹,最后扣丁學(xué)堂有專業(yè)老師制定的大數(shù)據(jù)學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的大數(shù)據(jù)課程體系和大量的大數(shù)據(jù)視頻教程供學(xué)員觀看學(xué)習(xí),想要學(xué)好大數(shù)據(jù)開發(fā)技術(shù)的小伙伴快快行動(dòng)吧??鄱W(xué)堂大數(shù)據(jù)學(xué)習(xí)群:769591751。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“大數(shù)據(jù)培訓(xùn)資訊”的相關(guān)文章>
標(biāo)簽:
大數(shù)據(jù)培訓(xùn)
大數(shù)據(jù)視頻教程
大數(shù)據(jù)分析培訓(xùn)
大數(shù)據(jù)學(xué)習(xí)視頻
Hadoop生態(tài)圈