鎖屏面試題百日百刷-Hive篇(十二)
? ?鎖屏面試題百日百刷,每個(gè)工作日?qǐng)?jiān)持更新面試題。鎖屏面試題app、小程序現(xiàn)已上線,官網(wǎng)地址:https://www.demosoftware.cn。已收錄了每日更新的面試題的所有內(nèi)容,還包含特色的解鎖屏幕復(fù)習(xí)面試題、每日編程題目郵件推送等功能。讓你在面試中先人一步!接下來(lái)的是今日的面試題:
1.Hive導(dǎo)出數(shù)據(jù)的五種方式?
1. Insert方式,查詢結(jié)果導(dǎo)出到本地或HDFS
Insert overwrite local directory ‘/root/insert/student’ select id,name from student;
Insert overwrite directory ‘/user/ insert /student’ select id,name from student;
2. Hadoop命令導(dǎo)出本地
hive>dfs -get /user/hive/warehouse/student/ 000000_0 /root/hadoop/student.txt
3. hive Shell命令導(dǎo)出
]$ bin/hive -e ‘select id,name from student;’ > /root/hadoop/student.txt
4. Export導(dǎo)出到HDFS
hive> export table student to ‘/user/export/student’;
1.Sqoop導(dǎo)出
2.Hive是怎樣保存元數(shù)據(jù)的?
保存元數(shù)據(jù)的方式有:內(nèi)存數(shù)據(jù)庫(kù)rerdy,本地mysql數(shù)據(jù)庫(kù),遠(yuǎn)程mysql數(shù)據(jù)庫(kù),但是本地的mysql數(shù)據(jù)用的比較多,因?yàn)楸镜刈x寫速度都比較快
內(nèi)存數(shù)據(jù)庫(kù)derby,安裝小,但是數(shù)據(jù)存在內(nèi)存,不穩(wěn)定
mysql數(shù)據(jù)庫(kù),數(shù)據(jù)存儲(chǔ)模式可以自己設(shè)置,持久化好,查看方便。
3.說(shuō)說(shuō)對(duì)Hive桶表的理解?
桶表是對(duì)數(shù)據(jù)進(jìn)行哈希取值,然后放到不同文件中存儲(chǔ)。
數(shù)據(jù)加載到桶表時(shí),會(huì)對(duì)字段取hash值,然后與桶的數(shù)量取模。把數(shù)據(jù)放到對(duì)應(yīng)的文件中。物理上,每個(gè)桶就是表(或分區(qū))目錄里的一個(gè)文件,一個(gè)作業(yè)產(chǎn)生的桶(輸出文件)和reduce任務(wù)個(gè)數(shù)相同。
桶表專門用于抽樣查詢,是很專業(yè)性的,不是日常用來(lái)存儲(chǔ)數(shù)據(jù)的表,需要抽樣查詢時(shí),才創(chuàng)建和使用桶表。
4.什么是?metastore?
metadata 即元數(shù)據(jù)。包含 database、tabel、column names、partitions 信息、bucketing 信息等的元數(shù)據(jù)信息。元數(shù)據(jù)默認(rèn)是存儲(chǔ)在 Derby 中,建議存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)中。
5.Hive如何動(dòng)態(tài)分區(qū)?
與分區(qū)有關(guān)的有兩種類型的分區(qū):靜態(tài)和動(dòng)態(tài)。在靜態(tài)分區(qū)中,您將在加載數(shù)據(jù)時(shí)(顯式)指定分區(qū)列。
而在動(dòng)態(tài)分區(qū)中,您將數(shù)據(jù)推送到?Hive,然后 Hive 決定哪個(gè)值應(yīng)進(jìn)入哪個(gè)分區(qū)。要啟用動(dòng)態(tài)分區(qū),請(qǐng)?jiān)O(shè)置下面的屬性:hive.exec.dynamic.parition.mode=nonstrict;
insert overwrite table emp_details_partitioned partition(location)
select * from emp_details;
6.如何創(chuàng)建?bucket 表?
默認(rèn)情況下,在?Hive 中禁用分桶功能,可以通過(guò)設(shè)置下面的屬性強(qiáng)制啟用分桶功能:
hive.enforce.bucketing=true;