天天看點

大資料之Hive實踐分享之存儲和壓縮問題的詳解

給大家分享一篇關于Hive實踐分享之存儲和壓縮的坑詳解,首先大多數同學在學習大資料技術的過程中,Hive是非常重要的技術之一,但我們在項目上經常會遇到一些存儲和壓縮的坑,本文通過大資料的武老師整理,分享給大家。

大資料之Hive實踐分享之存儲和壓縮問題的詳解

大家都知道,由于叢集資源有限,我們一般都會針對資料檔案的「存儲結構」和「壓縮形式」進行配置優化。在我實際檢視以後,發現叢集的檔案存儲格式為Parquet,一種列式存儲引擎,類似的還有ORC。而檔案的壓縮形式為Snappy。具體的操作形式如下:

①建立Parquet結構的表(Hive0.13andlater):

②确認表的檔案存儲格式:

結果輸出如下

③建立Snappy壓縮格式的Parquet結構的表(待考察):

或,寫入時

回到最初的問題,如果是按Snappy壓縮的格式,這份使用者行為資料沒辦法分析了,是以有兩種辦法去解決:

①安裝Snappy的解壓工具

可自行百度,由于沒有權限,是以這條路行不通;

②更改資料的壓縮格式可以

最初我試了一下更改Parquet格式表的壓縮格式,但是沒有用!因為我最後是需要将查詢資料導出到本地檔案系統,如下語句所示:

是以,通過這樣的形式得到的資料,壓縮格式依然是.Snappy。是以,這裡就需要配置Hive執行過程中的中間資料和最終資料的壓縮格式。

如MapReduce的shuffle階段對mapper産生的中間結果資料壓縮:

如對最終生成的Hive表的資料壓縮:

這裡,我們要設定結果表資料的壓縮格式,語句如下:

最終的結果就是.gz的壓縮格式

最後,我們直接下載下傳到電腦本地,直接解壓就可以通過Excel分析使用者行為路徑資料了。從Hive應用層的角度來說,關于資料檔案的「存儲結構」和「壓縮形式」,這兩個點我們不需要關心,隻是在導出資料的時候需要結合檔案大小,以及資料類型去設定合适的壓縮格式。不過從Hive底層維護的角度來說,涉及到各種各樣的「存儲結構」和「壓縮形式」,都需要開發者去研究和調整,這樣才能保證叢集上的檔案在「時間」和「空間」上相對平衡。

繼續閱讀