在Impala 和Hive裏進行數據分區(1)


進行數據分區將會極大的提高數據查詢的效率,尤其是對於當下大數據的運用,是一門不可或缺的知識。那麼數據怎麼創建分區呢?數據怎樣加載到分區呢?

  • Impala/Hive按State分區Accounts

(1)示例:accounts是非分區表

wKiom1h2_EnSt-X7AAEfrJRChiI954.png-wh_50

通過以上方式創建的話,數據就存放在accounts目錄裏面。那麼,如果Loudacre大部分對customer表的分析是按state來完成的?比如:

wKiom1h2_FugLa6sAABJqWfJJaE435.png-wh_50

這種情況下如果數據量很大,爲了避免全表掃描的發生,我們可以去創建分區。如果不創建分區的話,它會默認所有查詢不得不掃描目錄的所有文件。創建分區按state將數據存儲到不同的子目錄,當按照“NY”的條件進行查詢的時候,它只會掃描到子目錄,下面我具體來看一下分區創建。

二、分區創建

(1)使用PARTITIONED BY來創建分區表

wKioL1h2_Grw90jxAAFWAgQZY6E325.png-wh_50

在這裏注意state是被刪除掉的,因爲它作爲分區字段,我們知道分區數據是不會出現在實際的文件當中的,所以state作爲分區字段是不會出現在列當中的。換句話說,分區鍵就是一個虛列,它是不會存在列當中的。那麼,如何去查看我們分區的列呢?它會出現在我們的結構當中嗎?會的。

三、查看分區列

使用DESCRIBE顯示分區列,它會出現在結構最後一列,它是一個虛列,並不是真實在數據中存在的列。

wKiom1h2_HjimK9DAAEw_rxEwws663.png-wh_50

我們創建單個分區,但有時候會有嵌套分區,如何來處理呢?

四、創建嵌套分區:

wKioL1h2_IXyfiaBAABVUJW1iHA425.png-wh_50

創建好了分區,我們怎麼加載數據到分區呢?有兩種方式動態分區和靜態分區。動態分區是指Impala/Hive在加載的時候自動添加新的分區,數據基於列值存儲到正確的分區(子目錄)。而靜態分區需要我們通過ADD PARTITION提前去定義分區的名稱,當加載數據的時候,指定存儲數據到哪個分區。那麼動態分區和靜態分區各有什麼特徵呢?後續爲大家接着分享。

     對於大數據,我們應該積極主動的去迎合和學習,因爲它沒有成熟的體系,還在發展上升,只有不斷學習提升纔可以趕上發展的步伐。建議在平時大家多學習交流,我在平常喜歡關注“大數據cn”這個微信公衆號,對於我個人而言,很不錯,推薦圍觀。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章