大數(shù)據(jù)面試真題,來試試你有幾斤幾兩
今天為大家?guī)淼膭t是另一個同樣建立在Hadoop基礎(chǔ)上的技術(shù)—Hive。HBase是作為分布式數(shù)據(jù)庫,而Hive是作為分布式數(shù)據(jù)倉庫。
為了幫助大家更好的區(qū)別HBase和Hive,科妹特地選取了20道Hive的問答題,一定要積極動腦積極思考。
1.Hive的主要作用是什么?
2.啟動Hive的方式有哪些?
3.請談一下Hive的特點是什么?Hive和RDBMS有什么異同?
4.Redis, 傳統(tǒng)數(shù)據(jù)庫,hbase,hive 每個之間的區(qū)別?
5.Hive創(chuàng)建id,name,sex表的語法是什么?
6.Hive的兩個重要參數(shù)是什么?
7.Hive中如何復(fù)制一張表的表結(jié)構(gòu)(不帶有被復(fù)制表數(shù)據(jù))
8.Hive中追加導(dǎo)入數(shù)據(jù)的4種方式是什么?請寫出簡要語法。
9.Hive是怎樣保存元數(shù)據(jù)的?
10.Hive內(nèi)部表和外部表的區(qū)別?
11.配置hive-site.xml都修改了哪些屬性,請寫出屬性名稱并解釋該屬性。
12.配置hive-env.sh都涉及到哪些屬性?
13.如何連接HiveServer2?寫出具體命令。
14.HiveServer2的作用是什么?
15.所有的hive任務(wù)都會有reducer的執(zhí)行嗎?
16.分區(qū)和分桶的區(qū)別。
17.Hive的 sort by 和 order by 的區(qū)別。
18.簡要描述數(shù)據(jù)庫中的 null,說出null在hive底層如何存儲,并解釋
selecta.* from t1 a left outer join t2b on a.id=b.id where b.id is null;
的含義。
19.請說明hive中 Sort By,Order By,Cluster By,Distrbute By各代表什么意思。
20.請把下一語句用hive方式實現(xiàn)。
SELECT a.key,a.value FROM a WHERE a.key not in (SELECT b.key FROM b)
答案解析:
1.Hive是基于hadoop的數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射成一張數(shù)據(jù)表,并且提供sql查詢。相當(dāng)于mapreduce的客戶端。
2.1)
bin/hive
2)
bin/hiveserver2
3.hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運行。其優(yōu)點是學(xué)習(xí)成本低,可以通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計,不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析。
4.1)Redis 是基于內(nèi)存的數(shù)據(jù)庫,注重實用內(nèi)存的計算。
2)hbase是列式數(shù)據(jù)庫,無法創(chuàng)建主鍵,地從是基于HDFS的,每一行可以保存很多的列。
3)hive是數(shù)據(jù)的倉庫,是為了減輕mapreduce而設(shè)計的,不是數(shù)據(jù)庫,是用來與hadoop做交互的。
5.
create table student(id int,name String,sex String) row format delimited fields terminated by ' '
6.1)hive -e '' 從命令行執(zhí)行指定的HQL。
2)hive -f *.hql 執(zhí)行hive腳本命令。
7.
create table a like b
8.1)從本地導(dǎo)入:
loaddata local inpath '/home/1.txt' (overwrite)into table student
2)從Hdfs導(dǎo)入:
load data inpath'/user/hive/warehouse/1.txt' (overwrite)into table student
3)查詢導(dǎo)入:
create table student1 as select * from student
4)查詢結(jié)果導(dǎo)入:
insert (overwrite)into table staff select * from track_log
9.1)保存元數(shù)據(jù)的方式有:內(nèi)存數(shù)據(jù)庫rerdy,本地mysql數(shù)據(jù)庫,遠(yuǎn)程mysql數(shù)據(jù)庫。
2)但是本地的mysql數(shù)據(jù)用的比較多,因為本地讀寫速度都比較快。
10.1)在導(dǎo)入數(shù)據(jù)到外部表,數(shù)據(jù)并沒有移動到自己的數(shù)據(jù)倉庫目錄下,也就是說外部表中的數(shù)據(jù)并不是由它自己來管理的!而表則不一樣。
2)在刪除表的時候,Hive將會把屬于表的元數(shù)據(jù)和數(shù)據(jù)全部刪掉;而刪除外部表的時候,Hive僅僅刪除外部表的元數(shù)據(jù),數(shù)據(jù)是不會刪除的。
11.1)連接數(shù)據(jù)庫的uRL。
2)數(shù)據(jù)庫驅(qū)動名。
3)數(shù)據(jù)庫賬戶。
4)數(shù)據(jù)庫密碼。
12.1)添加JAVA_HOME路徑:
JAVA_HOME=/opt/modules/jdk1.7.0_67
2)添加HADOOP_HOME路徑:
HADOOP_HOME=/opt/modules/hadoop-2.5.0-cdh5.3.6/
3)添加HIVE_COF路徑:
exportHIVE_CONF_DIR=/opt/modules/hive-0.13.1-cdh5.3.6/conf
13.1)
bin/hiveserver2
2)
bin/beeline
3)
!connect jdbc:hive2://hadoop102:10000
14.Hiveserver2作用是允許多臺主機(jī)通過beeline連接hiveserver2上,在通過hiveserver2連接到hive數(shù)據(jù)倉庫。
15.不是,由于當(dāng)前hive的優(yōu)化,使得一般簡單的任務(wù)不會去用reducer任務(wù);只有稍微復(fù)雜的任務(wù)才會有reducer任務(wù)。
16.分區(qū):是指按照數(shù)據(jù)表的某列或某些列分為多個區(qū),區(qū)從形式上可以理解為文件夾,比如我們要收集某個大型網(wǎng)站的日志數(shù)據(jù),一個網(wǎng)站每天的日志數(shù)據(jù)存在同一張表上,由于每天會生成大量的日志,導(dǎo)致數(shù)據(jù)表的內(nèi)容巨大,在查詢時進(jìn)行全表掃描耗費的資源非常多。 那其實這個情況下,我們可以按照日期對數(shù)據(jù)表進(jìn)行分區(qū),不同日期的數(shù)據(jù)存放在不同的分區(qū),在查詢時只要指定分區(qū)字段的值就可以直接從該分區(qū)查找。
分桶:分桶是相對分區(qū)進(jìn)行更細(xì)粒度的劃分。分桶將整個數(shù)據(jù)內(nèi)容安裝某列屬性值得hash值進(jìn)行區(qū)分,如要按照name屬性分為3個桶,就是對name屬性值的hash值對3取摸,按照取模結(jié)果對數(shù)據(jù)分桶。如取模結(jié)果為0的數(shù)據(jù)記錄存放到一個文件,取模為1的數(shù)據(jù)存放到一個文件,取模為2的數(shù)據(jù)存放到一個文件。
17.1)order by 會對輸入做全局排序,因此只有一個reducer(多個reducer無法保證全局有序)只有一個reducer,會導(dǎo)致當(dāng)輸入規(guī)模較大時,需要較長的計算時間。
2)sort by不是全局排序,其在數(shù)據(jù)進(jìn)入reducer前完成排序.因此,如果用sort by進(jìn)行排序,并且設(shè)置mapred.reduce.tasks>1, 則sort by只保證每個reducer的輸出有序,不保證全局有序。
18.null與任何值運算的結(jié)果都是null, 可以使用is null、is not null函數(shù)指定在其值為null情況下的取值。 null在hive底層默認(rèn)是用'N'來存儲的,可以通過
alter table test SETSERDEPROPERTIES('serialization.null.format' = 'a')
來修改。
19.order by: 會對輸入做全局排序,因此只有一個reducer(多個reducer無法保證全局有序)。只有一個reducer,會導(dǎo)致當(dāng)輸入規(guī)模較大時,需要較長的計算時間。
sort by:不是全局排序,其在數(shù)據(jù)進(jìn)入reducer前完成排序。
distribute by:按照指定的字段對數(shù)據(jù)進(jìn)行劃分輸出到不同的reduce中。
cluster by:除了具有 distribute by 的功能外還兼具 sort by 的功能。
20.
selecta.key,a.value from a where a.key not exists (select b.key from b)
怎么樣,做完這20道問答,是不是對Hive的了解加深了呢?雖然Hive和HBase都是架構(gòu)在Hadoop之上的分布式技術(shù),但它們是完全獨立的兩個程序哦。
請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
-
即日-11.13立即報名>>> 【在線會議】多物理場仿真助跑新能源汽車
-
11月28日立即報名>>> 2024工程師系列—工業(yè)電子技術(shù)在線會議
-
12月19日立即報名>> 【線下會議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
-
即日-12.26火熱報名中>> OFweek2024中國智造CIO在線峰會
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書》
-
精彩回顧立即查看>> 【限時免費下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
推薦專題
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市