訂閱
糾錯(cuò)
加入自媒體

大數(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è)程序哦。

聲明: 本文由入駐維科號(hào)的作者撰寫(xiě),觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問(wèn)題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無(wú)評(píng)論

暫無(wú)評(píng)論

文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)