大數(shù)據(jù)面試真題,來(lái)試試你有幾斤幾兩
今天為大家?guī)?lái)的則是另一個(gè)同樣建立在Hadoop基礎(chǔ)上的技術(shù)—Hive。HBase是作為分布式數(shù)據(jù)庫(kù),而Hive是作為分布式數(shù)據(jù)倉(cāng)庫(kù)。
為了幫助大家更好的區(qū)別HBase和Hive,科妹特地選取了20道Hive的問(wèn)答題,一定要積極動(dòng)腦積極思考。
1.Hive的主要作用是什么?
2.啟動(dòng)Hive的方式有哪些?
3.請(qǐng)談一下Hive的特點(diǎn)是什么?Hive和RDBMS有什么異同?
4.Redis, 傳統(tǒng)數(shù)據(jù)庫(kù),hbase,hive 每個(gè)之間的區(qū)別?
5.Hive創(chuàng)建id,name,sex表的語(yǔ)法是什么?
6.Hive的兩個(gè)重要參數(shù)是什么?
7.Hive中如何復(fù)制一張表的表結(jié)構(gòu)(不帶有被復(fù)制表數(shù)據(jù))
8.Hive中追加導(dǎo)入數(shù)據(jù)的4種方式是什么?請(qǐng)寫(xiě)出簡(jiǎn)要語(yǔ)法。
9.Hive是怎樣保存元數(shù)據(jù)的?
10.Hive內(nèi)部表和外部表的區(qū)別?
11.配置hive-site.xml都修改了哪些屬性,請(qǐng)寫(xiě)出屬性名稱(chēng)并解釋該屬性。
12.配置hive-env.sh都涉及到哪些屬性?
13.如何連接HiveServer2?寫(xiě)出具體命令。
14.HiveServer2的作用是什么?
15.所有的hive任務(wù)都會(huì)有reducer的執(zhí)行嗎?
16.分區(qū)和分桶的區(qū)別。
17.Hive的 sort by 和 order by 的區(qū)別。
18.簡(jiǎn)要描述數(shù)據(jù)庫(kù)中的 null,說(shuō)出null在hive底層如何存儲(chǔ),并解釋
selecta.* from t1 a left outer join t2b on a.id=b.id where b.id is null;
的含義。
19.請(qǐng)說(shuō)明hive中 Sort By,Order By,Cluster By,Distrbute By各代表什么意思。
20.請(qǐng)把下一語(yǔ)句用hive方式實(shí)現(xiàn)。
SELECT a.key,a.value FROM a WHERE a.key not in (SELECT b.key FROM b)
答案解析:
1.Hive是基于hadoop的數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射成一張數(shù)據(jù)表,并且提供sql查詢(xún)。相當(dāng)于mapreduce的客戶(hù)端。
2.1)
bin/hive
2)
bin/hiveserver2
3.hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供完整的sql查詢(xún)功能,可以將sql語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過(guò)類(lèi)SQL語(yǔ)句快速實(shí)現(xiàn)簡(jiǎn)單的MapReduce統(tǒng)計(jì),不必開(kāi)發(fā)專(zhuān)門(mén)的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析。
4.1)Redis 是基于內(nèi)存的數(shù)據(jù)庫(kù),注重實(shí)用內(nèi)存的計(jì)算。
2)hbase是列式數(shù)據(jù)庫(kù),無(wú)法創(chuàng)建主鍵,地從是基于HDFS的,每一行可以保存很多的列。
3)hive是數(shù)據(jù)的倉(cāng)庫(kù),是為了減輕mapreduce而設(shè)計(jì)的,不是數(shù)據(jù)庫(kù),是用來(lái)與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)查詢(xún)導(dǎo)入:
create table student1 as select * from student
4)查詢(xún)結(jié)果導(dǎo)入:
insert (overwrite)into table staff select * from track_log
9.1)保存元數(shù)據(jù)的方式有:內(nèi)存數(shù)據(jù)庫(kù)rerdy,本地mysql數(shù)據(jù)庫(kù),遠(yuǎn)程mysql數(shù)據(jù)庫(kù)。
2)但是本地的mysql數(shù)據(jù)用的比較多,因?yàn)楸镜刈x寫(xiě)速度都比較快。
10.1)在導(dǎo)入數(shù)據(jù)到外部表,數(shù)據(jù)并沒(méi)有移動(dòng)到自己的數(shù)據(jù)倉(cāng)庫(kù)目錄下,也就是說(shuō)外部表中的數(shù)據(jù)并不是由它自己來(lái)管理的!而表則不一樣。
2)在刪除表的時(shí)候,Hive將會(huì)把屬于表的元數(shù)據(jù)和數(shù)據(jù)全部刪掉;而刪除外部表的時(shí)候,Hive僅僅刪除外部表的元數(shù)據(jù),數(shù)據(jù)是不會(huì)刪除的。
11.1)連接數(shù)據(jù)庫(kù)的uRL。
2)數(shù)據(jù)庫(kù)驅(qū)動(dòng)名。
3)數(shù)據(jù)庫(kù)賬戶(hù)。
4)數(shù)據(jù)庫(kù)密碼。
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作用是允許多臺(tái)主機(jī)通過(guò)beeline連接hiveserver2上,在通過(guò)hiveserver2連接到hive數(shù)據(jù)倉(cāng)庫(kù)。
15.不是,由于當(dāng)前hive的優(yōu)化,使得一般簡(jiǎn)單的任務(wù)不會(huì)去用reducer任務(wù);只有稍微復(fù)雜的任務(wù)才會(huì)有reducer任務(wù)。
16.分區(qū):是指按照數(shù)據(jù)表的某列或某些列分為多個(gè)區(qū),區(qū)從形式上可以理解為文件夾,比如我們要收集某個(gè)大型網(wǎng)站的日志數(shù)據(jù),一個(gè)網(wǎng)站每天的日志數(shù)據(jù)存在同一張表上,由于每天會(huì)生成大量的日志,導(dǎo)致數(shù)據(jù)表的內(nèi)容巨大,在查詢(xún)時(shí)進(jìn)行全表掃描耗費(fèi)的資源非常多。 那其實(shí)這個(gè)情況下,我們可以按照日期對(duì)數(shù)據(jù)表進(jìn)行分區(qū),不同日期的數(shù)據(jù)存放在不同的分區(qū),在查詢(xún)時(shí)只要指定分區(qū)字段的值就可以直接從該分區(qū)查找。
分桶:分桶是相對(duì)分區(qū)進(jìn)行更細(xì)粒度的劃分。分桶將整個(gè)數(shù)據(jù)內(nèi)容安裝某列屬性值得hash值進(jìn)行區(qū)分,如要按照name屬性分為3個(gè)桶,就是對(duì)name屬性值的hash值對(duì)3取摸,按照取模結(jié)果對(duì)數(shù)據(jù)分桶。如取模結(jié)果為0的數(shù)據(jù)記錄存放到一個(gè)文件,取模為1的數(shù)據(jù)存放到一個(gè)文件,取模為2的數(shù)據(jù)存放到一個(gè)文件。
17.1)order by 會(huì)對(duì)輸入做全局排序,因此只有一個(gè)reducer(多個(gè)reducer無(wú)法保證全局有序)只有一個(gè)reducer,會(huì)導(dǎo)致當(dāng)輸入規(guī)模較大時(shí),需要較長(zhǎng)的計(jì)算時(shí)間。
2)sort by不是全局排序,其在數(shù)據(jù)進(jìn)入reducer前完成排序.因此,如果用sort by進(jìn)行排序,并且設(shè)置mapred.reduce.tasks>1, 則sort by只保證每個(gè)reducer的輸出有序,不保證全局有序。
18.null與任何值運(yùn)算的結(jié)果都是null, 可以使用is null、is not null函數(shù)指定在其值為null情況下的取值。 null在hive底層默認(rèn)是用'N'來(lái)存儲(chǔ)的,可以通過(guò)
alter table test SETSERDEPROPERTIES('serialization.null.format' = 'a')
來(lái)修改。
19.order by: 會(huì)對(duì)輸入做全局排序,因此只有一個(gè)reducer(多個(gè)reducer無(wú)法保證全局有序)。只有一個(gè)reducer,會(huì)導(dǎo)致當(dāng)輸入規(guī)模較大時(shí),需要較長(zhǎng)的計(jì)算時(shí)間。
sort by:不是全局排序,其在數(shù)據(jù)進(jìn)入reducer前完成排序。
distribute by:按照指定的字段對(duì)數(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道問(wèn)答,是不是對(duì)Hive的了解加深了呢?雖然Hive和HBase都是架構(gòu)在Hadoop之上的分布式技術(shù),但它們是完全獨(dú)立的兩個(gè)程序哦。
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
- 2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書(shū) | 附獨(dú)家榜單
- EK工業(yè)多聯(lián)加持"國(guó)家級(jí)高新技術(shù)企業(yè)",見(jiàn)證軸承行業(yè)新奇跡
- 全數(shù)會(huì)2024中國(guó)深圳智能制造與機(jī)器人展覽會(huì)|走進(jìn)先臨三維
- 實(shí)地案例:必看,紅外熱成像在LED行業(yè)的應(yīng)用全在這里!
- 速領(lǐng)免費(fèi)門(mén)票!一文揭秘2024全數(shù)會(huì)亮點(diǎn):展商名錄、展商新品、同期會(huì)議、演講嘉賓、采購(gòu)名單
最新活動(dòng)更多
-
即日-11.30免費(fèi)預(yù)約申請(qǐng)>>> 燧石技術(shù)-紅外熱成像系列產(chǎn)品試用活動(dòng)
-
11月8日立即預(yù)約>> 筑夢(mèng)啟光 礪行致遠(yuǎn) | 新天激光數(shù)字化產(chǎn)研基地奠基儀式
-
11月29日立即預(yù)約>> 【上海線(xiàn)下】設(shè)計(jì),易如反掌—Creo 11發(fā)布巡展
-
11月30日立即試用>> 【有獎(jiǎng)試用】愛(ài)德克IDEC-九大王牌安全產(chǎn)品
-
即日-12.26火熱報(bào)名中>> OFweek2024中國(guó)智造CIO在線(xiàn)峰會(huì)
-
限時(shí)免費(fèi)下載立即下載 >>> 2024“機(jī)器人+”行業(yè)應(yīng)用創(chuàng)新發(fā)展藍(lán)皮書(shū)
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷(xiāo)售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷(xiāo)售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專(zhuān)家 廣東省/江門(mén)市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市