扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)Hive實踐分享之存儲和壓縮的坑
2019-02-14 14:05:04
1499瀏覽
今天扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)老師給大家介紹一下關(guān)于Hive實踐分享之存儲和壓縮的坑介紹,首先我們在學(xué)習(xí)大數(shù)據(jù)技術(shù)的過程中,HIVE是非常重要的技術(shù)之一,但我們在項目上經(jīng)常會遇到一些存儲和壓縮的坑,本文通過科多大數(shù)據(jù)的武老師整理,分享給大家。
大家都知道,由于集群資源有限,我們一般都會針對數(shù)據(jù)文件的「存儲結(jié)構(gòu)」和「壓縮形式」進(jìn)行配置優(yōu)化。在我實際查看以后,發(fā)現(xiàn)集群的文件存儲格式為Parquet,一種列式存儲引擎,類似的還有ORC。而文件的壓縮形式為Snappy。具體的操作形式如下:
①創(chuàng)建Parquet結(jié)構(gòu)的表(Hive0.13andlater):
CREATE TABLE CRM.DEMO(A INT) STORED AS PARQUET ;
②確認(rèn)表的文件存儲格式:
desc formatted crm.demo;
結(jié)果輸出如下
# Storage Information
SerDe Library: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
InputFormat: org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
OutputFormat: org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
③創(chuàng)建Snappy壓縮格式的Parquet結(jié)構(gòu)的表(待考察):
ALTER TABLE crm.demo SET TBLPROPERTIES ('parquet.compression'='SNAPPY') ;
或,寫入時
SET parquet.compression=SNAPPY ;
回到最初的問題,如果是按Snappy壓縮的格式,這份用戶行為數(shù)據(jù)沒辦法分析了,因此有兩種辦法去解決:
①安裝Snappy的解壓工具
可自行百度,由于沒有權(quán)限,所以這條路行不通;
②更改數(shù)據(jù)的壓縮格式可以
最初我試了一下更改Parquet格式表的壓縮格式,但是沒有用!因為我最后是需要將查詢數(shù)據(jù)導(dǎo)出到本地文件系統(tǒng),如下語句所示:
insert overwrite local directory '/home/etl/tmp/data'
select *
from crm.demo
所以,通過這樣的形式得到的數(shù)據(jù),壓縮格式依然是.Snappy。因此,這里就需要配置Hive執(zhí)行過程中的中間數(shù)據(jù)和最終數(shù)據(jù)的壓縮格式。
如MapReduce的shuffle階段對mapper產(chǎn)生的中間結(jié)果數(shù)據(jù)壓縮:
hive> set mapred.map.output.compression.codec;
mapred.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec
如對最終生成的Hive表的數(shù)據(jù)壓縮:
hive> set mapred.output.compression.codec;
mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec
這里,我們要設(shè)置結(jié)果表數(shù)據(jù)的壓縮格式,語句如下:
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
最終的結(jié)果就是.gz的壓縮格式
-rw-r--r-- 1 etl etl 342094 May 10 11:13 000000_0.gz
最后,我們直接下載到電腦本地,直接解壓就可以通過Excel分析用戶行為路徑數(shù)據(jù)了。
總結(jié):從Hive應(yīng)用層的角度來說,關(guān)于數(shù)據(jù)文件的「存儲結(jié)構(gòu)」和「壓縮形式」,這兩個點我們不需要關(guān)心,只是在導(dǎo)出數(shù)據(jù)的時候需要結(jié)合文件大小,以及數(shù)據(jù)類型去設(shè)置合適的壓縮格式。不過從Hive底層維護(hù)的角度來說,涉及到各種各樣的「存儲結(jié)構(gòu)」和「壓縮形式」,都需要開發(fā)者去研究和調(diào)整,這樣才能保證集群上的文件在「時間」和「空間」上相對平衡。
以上就是關(guān)于扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)Hive實踐分享之存儲和壓縮的坑詳細(xì)介紹,希望對同學(xué)們認(rèn)識大數(shù)據(jù)Hadoop有所幫助,最后想要學(xué)好大數(shù)據(jù)開發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專業(yè)老師制定的大數(shù)據(jù)學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時俱進(jìn)的大數(shù)據(jù)視頻教程供大家學(xué)習(xí),想要學(xué)好大數(shù)據(jù)開發(fā)技術(shù)的小伙伴快快行動吧。扣丁學(xué)堂大數(shù)據(jù)學(xué)習(xí)群:209080834。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“大數(shù)據(jù)培訓(xùn)資訊”的相關(guān)文章>
標(biāo)簽:
大數(shù)據(jù)培訓(xùn)
大數(shù)據(jù)視頻教程
大數(shù)據(jù)分析培訓(xùn)
大數(shù)據(jù)學(xué)習(xí)視頻
Hadoop生態(tài)圈