hive中的分區和桶eclipse
Hive 把表組織成「分區」 Partition。 這是一種根據「分區列」(Partition column,如日期)的值對錶進行粗略劃分的機制,使用分區能夠加快數據分片(Slice)的查詢速度spa
表和分區能夠進一步分爲「桶」(Bucket)它會爲數據提供額外的結果以得到更高效率的查詢處理,例如,經過根據用戶ID來劃分桶,咱們能夠早全部用戶集合的隨機樣本上快速計算基於用戶的查詢。日誌
下面以日誌文件進行考慮,日誌文件中的每條記錄包含一個分區,咱們通常根據日期來進行分區,同一天的記錄會放在相同的區中。ip
分區是在建立表的時候用partition by 子句定義的,該子句須要定義列的列表it
桶的話,能夠把該表分紅規定的幾個部分,每一個部分是根據制定的列取模來決定的 下面咱們就是根據ts來對4取模決定桶的
io
以下:效率
在咱們把數據加載到分區表的時候,要顯示的指定分區值,好比咱們在目錄下面有一個文件 20140418GB.txt 裏面有內容
cli
咱們將該數據加載到表logs中im
如今來查看HDFS結構和裏面的數據數據
咱們在eclipse中查看
可是奇怪的是,進去裏面的目錄咱們能夠看到
這裏並無出現分桶,而後咱們進行數據查找,以分桶的形式
結果以下
這個結果包括了全部三個文件中,符合要求的記錄
我曾單獨的使用過度桶,實驗顯示,若是單獨分桶那麼將會看見所分桶的各片,可是分區和分桶一塊兒來的話,卻只能看見分區的目錄
咱們是否是能夠這樣理解,當分區和分桶一塊兒來時,分好的區是主流,咱們能夠看到分區中的目錄,可是分的桶,咱們再也不看見,結構存在,只是不顯示
而咱們進行查找時,就能夠用上了