http://bigdatastudy.net/show.aspx?id=163&cid=14
https://blog.csdn.net/WYpersist/article/details/80102757
Hive 原理
用戶提交查詢等任務(wù)給Driver。
編譯器獲得該用戶的任務(wù)Plan。
編譯器Compiler根據(jù)用戶任務(wù)去MetaStore中獲取需要的Hive的元數(shù)據(jù)信息。
編譯器Compiler得到元數(shù)據(jù)信息,對(duì)任務(wù)進(jìn)行編譯,先將HiveQL轉(zhuǎn)換為抽象語(yǔ)法樹(shù),然后將抽象語(yǔ)法樹(shù)轉(zhuǎn)換成查詢塊,將查詢塊轉(zhuǎn)化為邏輯的查詢計(jì)劃,重寫(xiě)邏輯查詢計(jì)劃,將邏輯計(jì)劃轉(zhuǎn)化為物理的計(jì)劃(MapReduce), 最后選擇最佳的策略。
將最終的計(jì)劃提交給Driver。
Driver將計(jì)劃Plan轉(zhuǎn)交給ExecutionEngine去執(zhí)行,獲取元數(shù)據(jù)信息,提交給JobTracker或者SourceManager執(zhí)行該任務(wù),任務(wù)會(huì)直接讀取HDFS中文件進(jìn)行相應(yīng)的操作。
獲取執(zhí)行的結(jié)果。
取得并返回執(zhí)行結(jié)果。
Mapreduce和hive的區(qū)別和聯(lián)系
http://www.360doc.com/content/14/1208/10/20466010_431234360.shtml
hive是基于hadoop的數(shù)據(jù)倉(cāng)庫(kù)。
那么為什么說(shuō)hive是基于Hadoop的呢?
之所以說(shuō)hive是構(gòu)建在Hadoop之上的數(shù)據(jù)倉(cāng)庫(kù),簡(jiǎn)單的說(shuō)是因?yàn)椋?/p>
①數(shù)據(jù)存儲(chǔ)在hdfs上
②數(shù)據(jù)計(jì)算用mapreduce
Hive是一種建立在Hadoop文件系統(tǒng)上的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu),并對(duì)存儲(chǔ)在HDFS中的數(shù)據(jù)進(jìn)行分析和管理;它可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供完整的 SQL 查詢功能,可以將 SQL 語(yǔ)句轉(zhuǎn)換為 MapReduce 任務(wù)進(jìn)行運(yùn)行,通過(guò)自己的 SQL 去查詢分析需要的內(nèi)容,這套 SQL 簡(jiǎn)稱(chēng) Hive SQL(HQL),使不熟悉MapReduce 的用戶也能很方便地利用 SQL 語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行查詢、匯總、分析。
Hive不支持更改數(shù)據(jù)的操作,Hive基于數(shù)據(jù)倉(cāng)庫(kù),提供靜態(tài)數(shù)據(jù)的動(dòng)態(tài)查詢。其使用類(lèi)SQL語(yǔ)言,底層經(jīng)過(guò)編譯轉(zhuǎn)為MapReduce程序,在hadoop上運(yùn)行,數(shù)據(jù)存儲(chǔ)在HDFS上。
簡(jiǎn)述有Hive之后,為何還要學(xué)mapreduce
https://blog.csdn.net/WYpersist/article/details/79981385
你覺(jué)得Hive是否支持in函數(shù)
https://blog.csdn.net/WYpersist/article/details/79980945
當(dāng)輸入hive 命令時(shí)卡住了,你認(rèn)為是為什么,從哪些方面考慮
Cpu ,網(wǎng)絡(luò),內(nèi)存
說(shuō)出Hive 安裝數(shù)據(jù)時(shí),mysql和Derby的區(qū)別,為什么安裝mysql ,或?yàn)槭裁窗惭bDerby,分別有什么優(yōu)缺陷
https://blog.csdn.net/WYpersist/article/details/80101617
簡(jiǎn)述Hive 桶表什么,什么作用,舉例
Hive 分區(qū)是什么,什么作用,該怎么分區(qū)
Hive 動(dòng)態(tài)分區(qū)和靜態(tài)分區(qū)
Hive 分區(qū)重命名
說(shuō)出Hive 導(dǎo)入數(shù)據(jù)的過(guò)程(表有多個(gè)分區(qū),桶)
Hive 排序
什么是Hive join
說(shuō)說(shuō)你所理解的Hive 視圖操作
Hive 序列函數(shù)
簡(jiǎn)述Hive 自定義函數(shù)
知道Hive UDF是什么嗎,什么作用,為什么要用
簡(jiǎn)述Hive 優(yōu)缺點(diǎn)
https://blog.csdn.net/wypersist/article/details/79999401
說(shuō)說(shuō)Hive內(nèi)部表和外部表分別是什么?為什么要建外部表?
Hive內(nèi)部表和外部表的區(qū)別
https://blog.csdn.net/wypersist/article/details/80314022
Hive 創(chuàng)建內(nèi)部表時(shí),會(huì)將數(shù)據(jù)移動(dòng)到數(shù)據(jù)倉(cāng)庫(kù)指向的路徑;若創(chuàng)建外部表,僅記錄數(shù)據(jù)所在的路徑,不對(duì)數(shù)據(jù)的位置做任何改變。在刪除表的時(shí)候,內(nèi)部表的元數(shù)據(jù)和數(shù)據(jù)會(huì)被一起刪除,而外部表只刪除元數(shù)據(jù),不刪除數(shù)據(jù)。這樣外部表相對(duì)來(lái)說(shuō)更加安全些,數(shù)據(jù)組織也更加靈活,方便共享源數(shù)據(jù)。
需要注意的是傳統(tǒng)數(shù)據(jù)庫(kù)對(duì)表數(shù)據(jù)驗(yàn)證是 schema on write(寫(xiě)時(shí)模式),而 Hive 在load時(shí)是不檢查數(shù)據(jù)是否符合schema的,hive 遵循的是 schema on read(讀時(shí)模式),只有在讀的時(shí)候hive才檢查、解析具體的數(shù)據(jù)字段、schema。
讀時(shí)模式的優(yōu)勢(shì)是load data 非常迅速,因?yàn)樗恍枰x取數(shù)據(jù)進(jìn)行解析,僅僅進(jìn)行文件的復(fù)制或者移動(dòng)。
寫(xiě)時(shí)模式的優(yōu)勢(shì)是提升了查詢性能,因?yàn)轭A(yù)先解析之后可以對(duì)列建立索引,并壓縮,但這樣也會(huì)花費(fèi)要多的加載時(shí)間。
被external修飾的是內(nèi)部表(managed table),被external修飾的為外部表(external table);
區(qū)別:
內(nèi)部表數(shù)據(jù)由Hive自身管理,外部表數(shù)據(jù)由HDFS管理;
內(nèi)部表數(shù)據(jù)存儲(chǔ)的位置是hive.metastore.warehouse.dir(默認(rèn):/user/hive/warehouse),外部表數(shù)據(jù)的存儲(chǔ)位置由自己制定;
刪除內(nèi)部表會(huì)直接刪除元數(shù)據(jù)(metadata)及存儲(chǔ)數(shù)據(jù);刪除外部表僅僅會(huì)刪除元數(shù)據(jù),HDFS上的文件并不會(huì)被刪除;
對(duì)內(nèi)部表的修改會(huì)將修改直接同步給元數(shù)據(jù),而對(duì)外部表的表結(jié)構(gòu)和分區(qū)進(jìn)行修改,則需要修復(fù)(MSCK REPAIR TABLE table_name;)
https://blog.csdn.net/wypersist/article/details/80314022
什么是數(shù)據(jù)傾斜
Hive 表類(lèi)型有哪些
https://blog.csdn.net/dsl200970/article/details/70245916
Mapreduce和hive的區(qū)別和聯(lián)系
http://www.360doc.com/content/14/1208/10/20466010_431234360.shtml
hive是基于hadoop的數(shù)據(jù)倉(cāng)庫(kù)。
那么為什么說(shuō)hive是基于Hadoop的呢?
之所以說(shuō)hive是構(gòu)建在Hadoop之上的數(shù)據(jù)倉(cāng)庫(kù),簡(jiǎn)單的說(shuō)是因?yàn)椋?/p>
①數(shù)據(jù)存儲(chǔ)在hdfs上
②數(shù)據(jù)計(jì)算用mapreduce
Hive是一種建立在Hadoop文件系統(tǒng)上的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu),并對(duì)存儲(chǔ)在HDFS中的數(shù)據(jù)進(jìn)行分析和管理;它可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供完整的 SQL 查詢功能,可以將 SQL 語(yǔ)句轉(zhuǎn)換為 MapReduce 任務(wù)進(jìn)行運(yùn)行,通過(guò)自己的 SQL 去查詢分析需要的內(nèi)容,這套 SQL 簡(jiǎn)稱(chēng) Hive SQL(HQL),使不熟悉MapReduce 的用戶也能很方便地利用 SQL 語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行查詢、匯總、分析。
Hive不支持更改數(shù)據(jù)的操作,Hive基于數(shù)據(jù)倉(cāng)庫(kù),提供靜態(tài)數(shù)據(jù)的動(dòng)態(tài)查詢。其使用類(lèi)SQL語(yǔ)言,底層經(jīng)過(guò)編譯轉(zhuǎn)為MapReduce程序,在hadoop上運(yùn)行,數(shù)據(jù)存儲(chǔ)在HDFS上。
說(shuō)出Hive 如何調(diào)優(yōu),提升效率
https://blog.csdn.net/WYpersist/article/details/80030499
https://blog.csdn.net/WYpersist/article/details/80030921
https://blog.csdn.net/WYpersist/article/details/80032327
說(shuō)出Hive 數(shù)據(jù)清洗的過(guò)程
Hive 編程題
5、海量數(shù)據(jù)分布在100臺(tái)電腦上,統(tǒng)計(jì)出這批數(shù)據(jù)的TOP10。(寫(xiě)出核心算法思路)
6、背景:現(xiàn)有商品,買(mǎi)家,賣(mài)家三個(gè)實(shí)體,實(shí)現(xiàn)一個(gè)小小型的交易系統(tǒng)
1)給出表結(jié)構(gòu)設(shè)計(jì)
2)帥選出沒(méi)有買(mǎi)過(guò)商品的用戶
3)寫(xiě)出sql 語(yǔ)句,帥選出僅僅購(gòu)買(mǎi)了面粉的用戶
HIVE與RDBMS關(guān)系數(shù)據(jù)庫(kù)的區(qū)別
1、hive存儲(chǔ)的數(shù)據(jù)量比較大,適合海量數(shù)據(jù),適合存儲(chǔ)軌跡類(lèi)歷史數(shù)據(jù),適合用來(lái)做離線分析、數(shù)據(jù)挖掘運(yùn)算,
事務(wù)性較差,實(shí)時(shí)性較差
rdbms一般數(shù)據(jù)量相對(duì)來(lái)說(shuō)不會(huì)太大,適合事務(wù)性計(jì)算,實(shí)時(shí)性較好,更加接近上層業(yè)務(wù)
2、hive的計(jì)算引擎是hadoop的mapreduce,存儲(chǔ)是hadoop的hdfs文件系統(tǒng),
rdbms的引擎由數(shù)據(jù)庫(kù)自己設(shè)計(jì)實(shí)現(xiàn)例如mysql的innoDB,存儲(chǔ)用的是數(shù)據(jù)庫(kù)服務(wù)器本地的文件系統(tǒng)
3、hive由于基于hadoop所以存儲(chǔ)和計(jì)算的擴(kuò)展能力都很好,
rdbms在這方面比較弱,比如orcale的分表和擴(kuò)容就很頭疼
4、hive表格沒(méi)有主鍵、沒(méi)有索引、不支持對(duì)具體某一行的操作,適合對(duì)批量數(shù)據(jù)的操作,不支持對(duì)數(shù)據(jù)的update操作,
更新的話一般是先刪除表然后重新落數(shù)據(jù)
rdbms事務(wù)性強(qiáng),有主鍵、索引,支持對(duì)具體某一行的增刪改查等操作
5、hive的SQL為HQL,與標(biāo)準(zhǔn)的RDBMS的SQL存在有不少的區(qū)別,相對(duì)來(lái)說(shuō)功能有限
rdbms的SQL為標(biāo)準(zhǔn)SQL,功能較為強(qiáng)大。
Hive分析窗口函數(shù)
Hive 數(shù)據(jù)傾斜類(lèi)
Hive 取前10條數(shù)據(jù)
https://blog.csdn.net/wypersist/article/details/80318305
Hive 取最小成績(jī)的記錄和最大的記錄
Hive 四種排序
https://blog.csdn.net/wypersist/article/details/80314431
Hive 時(shí)間函數(shù)
Mysql 和hive的區(qū)別
Hive 的sql語(yǔ)句和mysql 的sql語(yǔ)句有什么不同
Mysql和derby
Hive 將元數(shù)據(jù)存儲(chǔ)在 RDBMS 中,一般常用 MySQL 和 Derby。默認(rèn)情況下,Hive 元數(shù)據(jù)保存在內(nèi)嵌的 Derby 數(shù)據(jù)庫(kù)中,只能允許一個(gè)會(huì)話連接,只適合簡(jiǎn)單的測(cè)試。實(shí)際生產(chǎn)環(huán)境中不適用, 為了支持多用戶會(huì)話,則需要一個(gè)獨(dú)立的元數(shù)據(jù)庫(kù),使用 MySQL 作為元數(shù)據(jù)庫(kù),Hive 內(nèi)部對(duì) MySQL 提供了很好的支持。
內(nèi)置的derby主要問(wèn)題是并發(fā)性能很差,可以理解為單線程操作。
Derby還有一個(gè)特性。更換目錄執(zhí)行操作,會(huì)找不到相關(guān)表等
比如在/usr下執(zhí)行創(chuàng)建表,在/usr下可以找到這個(gè)表。在/etc下執(zhí)行查找這個(gè)表,就會(huì)找不到 。
Hive存儲(chǔ)格式
https://blog.csdn.net/ly19901208/article/details/77049824
Hive 工作原理