大數據面試真題,來試試你有幾斤幾兩
今天為大家帶來的則是另一個同樣建立在Hadoop基礎上的技術—Hive。HBase是作為分布式數據庫,而Hive是作為分布式數據倉庫。
為了幫助大家更好的區別HBase和Hive,科妹特地選取了20道Hive的問答題,一定要積極動腦積極思考。

1.Hive的主要作用是什么?
2.啟動Hive的方式有哪些?
3.請談一下Hive的特點是什么?Hive和RDBMS有什么異同?
4.Redis, 傳統數據庫,hbase,hive 每個之間的區別?
5.Hive創建id,name,sex表的語法是什么?
6.Hive的兩個重要參數是什么?
7.Hive中如何復制一張表的表結構(不帶有被復制表數據)
8.Hive中追加導入數據的4種方式是什么?請寫出簡要語法。
9.Hive是怎樣保存元數據的?
10.Hive內部表和外部表的區別?
11.配置hive-site.xml都修改了哪些屬性,請寫出屬性名稱并解釋該屬性。
12.配置hive-env.sh都涉及到哪些屬性?
13.如何連接HiveServer2?寫出具體命令。
14.HiveServer2的作用是什么?
15.所有的hive任務都會有reducer的執行嗎?
16.分區和分桶的區別。
17.Hive的 sort by 和 order by 的區別。
18.簡要描述數據庫中的 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方式實現。
SELECT a.key,a.value FROM a WHERE a.key not in (SELECT b.key FROM b)
答案解析:
1.Hive是基于hadoop的數據倉庫工具,可以將結構化的數據文件映射成一張數據表,并且提供sql查詢。相當于mapreduce的客戶端。
2.1)
bin/hive
2)
bin/hiveserver2
3.hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行。其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
4.1)Redis 是基于內存的數據庫,注重實用內存的計算。
2)hbase是列式數據庫,無法創建主鍵,地從是基于HDFS的,每一行可以保存很多的列。
3)hive是數據的倉庫,是為了減輕mapreduce而設計的,不是數據庫,是用來與hadoop做交互的。
5.
create table student(id int,name String,sex String) row format delimited fields terminated by ' '
6.1)hive -e '' 從命令行執行指定的HQL。
2)hive -f *.hql 執行hive腳本命令。
7.
create table a like b
8.1)從本地導入:
loaddata local inpath '/home/1.txt' (overwrite)into table student
2)從Hdfs導入:
load data inpath'/user/hive/warehouse/1.txt' (overwrite)into table student
3)查詢導入:
create table student1 as select * from student
4)查詢結果導入:
insert (overwrite)into table staff select * from track_log
9.1)保存元數據的方式有:內存數據庫rerdy,本地mysql數據庫,遠程mysql數據庫。
2)但是本地的mysql數據用的比較多,因為本地讀寫速度都比較快。
10.1)在導入數據到外部表,數據并沒有移動到自己的數據倉庫目錄下,也就是說外部表中的數據并不是由它自己來管理的!而表則不一樣。
2)在刪除表的時候,Hive將會把屬于表的元數據和數據全部刪掉;而刪除外部表的時候,Hive僅僅刪除外部表的元數據,數據是不會刪除的。
11.1)連接數據庫的uRL。
2)數據庫驅動名。
3)數據庫賬戶。
4)數據庫密碼。
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作用是允許多臺主機通過beeline連接hiveserver2上,在通過hiveserver2連接到hive數據倉庫。
15.不是,由于當前hive的優化,使得一般簡單的任務不會去用reducer任務;只有稍微復雜的任務才會有reducer任務。
16.分區:是指按照數據表的某列或某些列分為多個區,區從形式上可以理解為文件夾,比如我們要收集某個大型網站的日志數據,一個網站每天的日志數據存在同一張表上,由于每天會生成大量的日志,導致數據表的內容巨大,在查詢時進行全表掃描耗費的資源非常多。 那其實這個情況下,我們可以按照日期對數據表進行分區,不同日期的數據存放在不同的分區,在查詢時只要指定分區字段的值就可以直接從該分區查找。
分桶:分桶是相對分區進行更細粒度的劃分。分桶將整個數據內容安裝某列屬性值得hash值進行區分,如要按照name屬性分為3個桶,就是對name屬性值的hash值對3取摸,按照取模結果對數據分桶。如取模結果為0的數據記錄存放到一個文件,取模為1的數據存放到一個文件,取模為2的數據存放到一個文件。
17.1)order by 會對輸入做全局排序,因此只有一個reducer(多個reducer無法保證全局有序)只有一個reducer,會導致當輸入規模較大時,需要較長的計算時間。
2)sort by不是全局排序,其在數據進入reducer前完成排序.因此,如果用sort by進行排序,并且設置mapred.reduce.tasks>1, 則sort by只保證每個reducer的輸出有序,不保證全局有序。
18.null與任何值運算的結果都是null, 可以使用is null、is not null函數指定在其值為null情況下的取值。 null在hive底層默認是用'N'來存儲的,可以通過
alter table test SETSERDEPROPERTIES('serialization.null.format' = 'a')
來修改。
19.order by: 會對輸入做全局排序,因此只有一個reducer(多個reducer無法保證全局有序)。只有一個reducer,會導致當輸入規模較大時,需要較長的計算時間。
sort by:不是全局排序,其在數據進入reducer前完成排序。
distribute by:按照指定的字段對數據進行劃分輸出到不同的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都是架構在Hadoop之上的分布式技術,但它們是完全獨立的兩個程序哦。
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
- 1 AI狂歡遇上油價破百,全球股市還能漲多久? | 產聯看全球
- 2 OpenAI深夜王炸!ChatGPT Images 2.0實測:中文穩、細節炸,設計師慌了
- 3 6000億美元估值錨定:字節跳動的“去單一化”突圍與估值重構
- 4 Tesla AI5芯片最新進展總結
- 5 連夜測了一波DeepSeek-V4,我發現它可能只剩“審美”這個短板了
- 6 熱點丨AI“瑜亮之爭”:既生OpenClaw,何生Hermes?
- 7 AI界的殺豬盤:9秒刪庫跑路,全員被封號,還繼續扣錢!
- 8 2026,人形機器人只贏了面子
- 9 DeepSeek降價90%:價格屠夫不是身份,是戰略
- 10 AI Infra產業鏈卡在哪里了?


分享













