hive面試題

http://bigdatastudy.net/show.aspx?id=163&cid=14

https://blog.csdn.net/WYpersist/article/details/80102757

Hive 原理

  1. 用戶提交查詢等任務(wù)給Driver。

  2. 編譯器獲得該用戶的任務(wù)Plan。

  3. 編譯器Compiler根據(jù)用戶任務(wù)去MetaStore中獲取需要的Hive的元數(shù)據(jù)信息。

  4. 編譯器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), 最后選擇最佳的策略。

  5. 將最終的計(jì)劃提交給Driver。

  6. Driver將計(jì)劃Plan轉(zhuǎn)交給ExecutionEngine去執(zhí)行,獲取元數(shù)據(jù)信息,提交給JobTracker或者SourceManager執(zhí)行該任務(wù),任務(wù)會(huì)直接讀取HDFS中文件進(jìn)行相應(yīng)的操作。

  7. 獲取執(zhí)行的結(jié)果。

  8. 取得并返回執(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 工作原理

https://blog.csdn.net/wypersist/article/details/80174647

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容