hive架構及使用場景

2021-08-11 01:24:36 字數 1978 閱讀 5884

一 什麼是hive,它能解決什麼問題?

hive是乙個基於hadoop的資料倉儲平台。它通過hdfs進行儲存,通過mapreduce執行查詢計畫,使用類sql的查詢語言hql作為查詢介面。

作用:可以很方便我們進行資料的etl工作,避免了使用mapreduce來做如此複雜事情。

二 hive的架構

三 hive的原理

客戶端發起查詢請求,比如你在hiveshell傳送一條hql語句,會呼叫cli.sh 並呼叫入口類clidriver這個類

3.1解析引數,設定一些屬性等

3.2建立consolereader,不斷的讀取控制台引數,直到遇到分號為止

3.3判斷這個語句是否編譯過,如果沒有編譯需要先編譯,呼叫driver#compile方法:

3.3.1建立querystate物件

3.3.2建立parserdriver,呼叫parserdriver#parse方法進行查詢解析,生成astnode(抽象語法樹),使用的是antlr(根據輸入自動生成語法樹的開源語法分析器):

生成astnode的規則:根據token 建立astnode

比如insert overwritetable access_log select a.user,a.prono,

3.3.3建立語義分析器semanticanalyzer

通過semanticanalyze***ctory#get(conf,tree)傳入的astnode的type建立不同的semanticanylyzer,這裡應用的是簡單工廠模式。

tok_explain=>explainsemanticanalyzer

tok_explain_sq_rewrite=>explainsqrewritesemanticanalyzer

tok_load=>loadsemanticanalyzer

tok_export=>exportsemanticanalyzer

tok_import=>importsemanticanalyzer

tok_altertable=>ddlsemanticanalyzer

tok_alterview=>ddlsemanticanalyzer

tok_query=>semanticanalyzer

tok_createfunction

、tok_dropfunction=>functionsemanticanalyzer

tok_analyze=>columnstatssemanticanalyzer

tok_update_table/tok_delete_from=>updatedeletesemanticanalyzer

預設情況就是

semanticanalyzer

3.3.4通過語義分析器basesemanticanalyzer#analyze進行語義分析

#根據語法樹建立解析樹

=>分析和處理表的別名

=>分析建立表和檢視的命令

=>分析form子句的子astnode

=>在這過程中,會往queryblock填充一些資訊(qb: 查詢的基本組成單元)

=>根據qb獲取元資料:

"a":tableinfo("access_log_hbase")

"p":tableinfo("product_hbase")

#遍歷queryblock, 根據解析樹建立操作樹operatortree

=>根據from從句得到所有的操作資訊:迴圈遞迴子查詢去填充執行計畫部分的子查詢;然後遞迴所有的源表,新增

Hive 概念 優缺點及使用場景

概念hive是構建與hadoop之上的資料倉儲軟體,能夠有效的讀取 寫入和管理大型資料集合,並且支援通過sql查詢分析資料。hive是基於hadoop的,hadoop資料處理任務本質上是 mapreduce,所以hivesql執行本質上都是mapreduce任務 優缺點比較 優點缺點 1 可以通過s...

hive使用適用場景 hive的典型應用場景

案例一 需求 現有這麼一批資料,現要求出 每個使用者截止到每月為止的最大單月訪問次數和累計到該月的總訪問次數。資料 使用者名稱,月份,訪問次數 a,2015 01,5 a,2015 01,15 b,2015 01,5 a,2015 01,8 b,2015 01,25 a,2015 01,5 a,20...

Hive 中拉鍊表使用場景

1.初始化一次全量資料到歷史拉鍊表中 只做一次操作就好 2.歷史拉鍊表與每日的日增量資料做merge操作 3.關閉拉鍊的時間視窗 業務場景 公司內部,員工的職級會隨著時間的變化發生緩慢的變化,例如 公升職 離職等 針對此情況,採用拉鍊表的方式既可保留歷史,也不影響使用。準備材料 1.員工表 crea...