Hive中的分區和桶

hive中的分區和桶eclipse


     Hive 把表組織成「分區」 Partition。 這是一種根據「分區列」(Partition column,如日期)的值對錶進行粗略劃分的機制,使用分區能夠加快數據分片(Slice)的查詢速度spa


     表和分區能夠進一步分爲「桶」(Bucket)它會爲數據提供額外的結果以得到更高效率的查詢處理,例如,經過根據用戶ID來劃分桶,咱們能夠早全部用戶集合的隨機樣本上快速計算基於用戶的查詢。日誌



   下面以日誌文件進行考慮,日誌文件中的每條記錄包含一個分區,咱們通常根據日期來進行分區,同一天的記錄會放在相同的區中。ip

   分區是在建立表的時候用partition by 子句定義的,該子句須要定義列的列表it

   桶的話,能夠把該表分紅規定的幾個部分,每一個部分是根據制定的列取模來決定的  下面咱們就是根據ts來對4取模決定桶的
io

以下:效率



在咱們把數據加載到分區表的時候,要顯示的指定分區值,好比咱們在目錄下面有一個文件   20140418GB.txt   裏面有內容
cli


咱們將該數據加載到表logs中im



如今來查看HDFS結構和裏面的數據數據

咱們在eclipse中查看


可是奇怪的是,進去裏面的目錄咱們能夠看到

這裏並無出現分桶,而後咱們進行數據查找,以分桶的形式



結果以下


這個結果包括了全部三個文件中,符合要求的記錄

我曾單獨的使用過度桶,實驗顯示,若是單獨分桶那麼將會看見所分桶的各片,可是分區和分桶一塊兒來的話,卻只能看見分區的目錄


咱們是否是能夠這樣理解,當分區和分桶一塊兒來時,分好的區是主流,咱們能夠看到分區中的目錄,可是分的桶,咱們再也不看見,結構存在,只是不顯示

而咱們進行查找時,就能夠用上了

相關文章
相關標籤/搜索