怎么進行Hive原理實踐,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、歷下ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的歷下網(wǎng)站制作公司
Hive基本架構(gòu)
Driver組件:核心組件,整個Hive的核心,該組件包括Complier(編譯器)、Optimizer(優(yōu)化器)和Executor(執(zhí)行器),它們的作用是對Hive SQL語句進行解析、編譯優(yōu)化,生成執(zhí)行計劃,然后調(diào)用底層的MapReduce計算框架。
Metastore組件:元數(shù)據(jù)服務(wù)組件,這個組件存儲Hive的元數(shù)據(jù)。支持的關(guān)系型數(shù)據(jù)庫有Derby和MySQL。
CLI:命令行接口
Thrift Server:提供JDBC和ODBC接入能力,用戶進行可擴展且跨語言的服務(wù)開發(fā)。Hive集成了該服務(wù),能讓不同的編程語言調(diào)用Hive的接口。
Hive Web Interface(HWI):Hive客戶端提供了一種通過網(wǎng)頁方式訪問Hive所提供的服務(wù)。這個接口對應(yīng)Hive的HWI組件。
Hive通過CLI、JDBC/ODBC 或者HWI接收相關(guān)的Hive SQL查詢,并通過Driver組件進行編譯,分析優(yōu)化,最后變成可執(zhí)行的MapReduce。
HIVE SQL
hive表:分內(nèi)部表和外部表
內(nèi)部表:會把hdfs目錄文件移動到hive對應(yīng)的目錄。刪除表對應(yīng)的表接口和文件也會一起刪除。
外部表:不會移動關(guān)聯(lián)的hdfs文件,刪除表只會刪除表結(jié)構(gòu)。
使用場景:如果數(shù)據(jù)的所有處理都在hive中進行,那么更傾向于選擇內(nèi)部表,但如果Hive和其它工具針對相同的數(shù)據(jù)集做處理,那么外部表更合適。
分區(qū)和分桶
分區(qū)可以讓數(shù)據(jù)的部分查詢變更更快,表或者分區(qū)可以進一步劃分為桶,桶通常在原始數(shù)據(jù)中加入一些額外的結(jié)構(gòu),這些結(jié)構(gòu)可以用于高效查詢。
分桶通常有兩個原因:一是高效查詢,二是高效的進行抽樣。
Hive SQL執(zhí)行原理:
大致歸三類:select語句、group by 語句、join語句。
流程:輸入分片->Map階段->Combiner(可選)->Shuffle階段(分區(qū)、排序、分隔、復(fù)制、合并等過程)-> Reduce階段-> 輸出文件。
其他SQL on Hadoop技術(shù):Impala、Drill、HAWQ、Presto、Dremel、Spark SQL。
Hive優(yōu)化
主要挑戰(zhàn)數(shù)據(jù)傾斜:group by 引起的傾斜優(yōu)化、Count distinct 優(yōu)化、大表join小表(mapjoin)優(yōu)化、大表join大表優(yōu)化。
關(guān)于怎么進行Hive原理實踐問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。