最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

鎖屏面試題百日百刷-Hive篇(八)

2023-03-03 02:25 作者:zjlala96  | 我要投稿

? ? 鎖屏面試題百日百刷,每個工作日堅持更新面試題。鎖屏面試題app、小程序現(xiàn)已上線,官網(wǎng)地址:https://www.demosoftware.cn。已收錄了每日更新的面試題的所有內(nèi)容,還包含特色的解鎖屏幕復(fù)習(xí)面試題、每日編程題目郵件推送等功能。讓你在面試中先人一步!接下來的是今日的面試題:


1.Hive 中的壓縮格式TextFile、SequenceFile、RCfile 、ORCfile各有什么區(qū)別?

1. TextFile

默認格式,存儲方式為行存儲,數(shù)據(jù)不做壓縮,磁盤開銷大,數(shù)據(jù)解析開銷大。?可結(jié)合Gzip、Bzip2使用(系統(tǒng)自動檢查,執(zhí)行查詢時自動解壓),但使用這種方式,壓縮后的文件不支持split,Hive不會對數(shù)據(jù)進行切分,從而無法對數(shù)據(jù)進行并行操作。并且在反序列化過程中,必須逐個字符判斷是不是分隔符和行結(jié)束符,因此反序列化開銷會比SequenceFile高幾十倍。

2. SequenceFile

SequenceFile是Hadoop API提供的一種二進制文件支持,,存儲方式為行存儲,其具有使用方便、可分割、可壓縮的特點。

SequenceFile支持三種壓縮選擇:NONE,RECORD,BLOCK。Record壓縮率低,一般建議使用BLOCK壓縮。優(yōu)勢是文件和hadoop api中的MapFile是相互兼容的

3. RCFile

存儲方式:數(shù)據(jù)按行分塊,每塊按列存儲。結(jié)合了行存儲和列存儲的優(yōu)點:

首先,RCFile?保證同一行的數(shù)據(jù)位于同一節(jié)點,因此元組重構(gòu)的開銷很低;

其次,像列存儲一樣,RCFile?能夠利用列維度的數(shù)據(jù)壓縮,并且能跳過不必要的列讀取;

RCFile的一個行組包括三個部分:

第一部分是行組頭部的【同步標識】,主要用于分隔?hdfs?塊中的兩個連續(xù)行組

第二部分是行組的【元數(shù)據(jù)頭部】,用于存儲行組單元的信息,包括行組中的記錄數(shù)、每個列的字節(jié)數(shù)、列中每個域的字節(jié)數(shù)

第三部分是【表格數(shù)據(jù)段】,即實際的列存儲數(shù)據(jù)。在該部分中,同一列的所有域順序存儲。

從圖可以看出,首先存儲了列?A?的所有域,然后存儲列?B?的所有域等。

數(shù)據(jù)追加:RCFile?不支持任意方式的數(shù)據(jù)寫操作,僅提供一種追加接口,這是因為底層的?HDFS當前僅僅支持數(shù)據(jù)追加寫文件尾部。

行組大?。盒薪M變大有助于提高數(shù)據(jù)壓縮的效率,但是可能會損害數(shù)據(jù)的讀取性能,因為這樣增加了?Lazy?解壓性能的消耗。而且行組變大會占用更多的內(nèi)存,這會影響并發(fā)執(zhí)行的其他MR作業(yè)??紤]到存儲空間和查詢效率兩個方面,F(xiàn)acebook?選擇?4MB?作為默認的行組大小,當然也允許用戶自行選擇參數(shù)進行配置。

4. ORCFile

存儲方式:數(shù)據(jù)按行分塊?每塊按照列存儲。

壓縮快?快速列存取。

效率比rcfile高,是rcfile的改良版本

以下為RCFile、TextFile、SequenceFile三種文件的存儲情況:

[hadoop@master ~]$ hadoop dfs -dus /user/Hive/warehouse/* hdfs://master :9000/user/Hive/warehouse/hbase_table_1 0

hdfs://master :9000/user/Hive/warehouse/hbase_table_2 0

hdfs://master :9000/user/Hive/warehouse/orcfile_table 0

hdfs://master :9000/user/Hive/warehouse/rcfile_table 102638073

hdfs://master :9000/user/Hive/warehouse/seqfile_table 112497695

hdfs://master :9000/user/Hive/warehouse/testfile_table 536799616

hdfs://master :9000/user/Hive/warehouse/textfile_table 107308067

[hadoop@singlehadoop ~]$ hadoop dfs -ls /user/Hive/warehouse/*/ -rw-r--r-- 2 hadoop supergroup 51328177 2021-03-20 00:42 /user/Hive/warehouse/rcfile_table/000000_0

-rw-r--r-- 2 hadoop supergroup 51309896 2021-03-20 00:43 /user/Hive/warehouse/rcfile_table/000001_0

-rw-r--r-- 2 hadoop supergroup 56263711 2021-03-20 01:20 /user/Hive/warehouse/seqfile_table/000000_0

-rw-r--r-- 2 hadoop supergroup 56233984 2021-03-20 01:21 /user/Hive/warehouse/seqfile_table/000001_0

-rw-r--r-- 2 hadoop supergroup 536799616 2021-03-19 23:15 /user/Hive/warehouse/testfile_table/weibo.txt -rw-r--r-- 2 hadoop supergroup 53659758 2021-03-19 23:24 /user/Hive/warehouse/textfile_table/000000_0.gz

-rw-r--r-- 2 hadoop supergroup 53648309 2021-03-19 23:26 /user/Hive/warehouse/textfile_table/000001_1.gz

總結(jié):相比TEXTFILE和SEQUENCEFILE,RCFILE由于列式存儲方式,數(shù)據(jù)加載時性能消耗較大,但是具有較好的壓縮比和查詢響應(yīng)。

數(shù)據(jù)倉庫的特點是一次寫入、多次讀取,因此,整體來看,RCFILE相比其余兩種格式具有較明顯的優(yōu)勢。

2.Hive join過程中大表小表的放置順序?

將最大的表放置在JOIN語句的最右邊,或者直接使用/*+ streamtable(table_name) */指出。在編寫帶有 join 操作的代碼語句時,應(yīng)該將條目少的表/子查詢放在 Join 操作符的左邊。因為在 Reduce 階段,位于 Join 操作符左邊的表的內(nèi)容會被加載進內(nèi)存,載入條目較少的表可以有效減少 OOM(out of memory)即內(nèi)存溢出。所以對于同一個 key 來說,對應(yīng)的 value 值小的放前,大的放后,這便是“小表放前”原則。若一條語句中有多個 Join,依據(jù) Join 的條件相同與否,有不同的處理方法。

3.Hive的兩張表關(guān)聯(lián),使用MapReduce怎么實現(xiàn)?

如果其中有一張表為小表,直接使用map端join的方式(map端加載小表)進行聚合。

如果兩張都是大表,那么采用聯(lián)合key,聯(lián)合key的第一個組成部分是join on中的公共字段,第二部分是一個flag,0代表表A,1代表表B,由此讓Reduce區(qū)分客戶信息和訂單信息;在Mapper中同時處理兩張表的信息,將join on公共字段相同的數(shù)據(jù)劃分到同一個分區(qū)中,進而傳遞到一個Reduce中,然后在Reduce中實現(xiàn)聚合。

鎖屏面試題百日百刷-Hive篇(八)的評論 (共 條)

分享到微博請遵守國家法律
朔州市| 庆城县| 奉化市| 乡城县| 曲靖市| 岳阳市| 宜黄县| 晋城| 满洲里市| 衡阳市| 政和县| 河北区| 多伦县| 五常市| 灵台县| 浏阳市| 栖霞市| 图木舒克市| 岢岚县| 泽州县| 句容市| 台江县| 辽阳县| 怀仁县| 土默特右旗| 新竹县| 郎溪县| 镇远县| 天全县| 颍上县| 武宣县| 慈利县| 疏附县| 辽中县| 兰州市| 万荣县| 织金县| 孟村| 永春县| 河源市| 合阳县|