天天看點

Hive動态分區Hive動态分區

靜态分區SP(static partition)

動态分區DP(dynamic partition)

靜态分區與動态分區的主要差別在于靜态分區是手動指定,而動态分區是通過資料來進行判斷。詳細來說,靜态分區的列實在編譯時期,通過使用者傳遞來決定的;動态分區隻有在SQL執行時才能決定。

1、建立一張分區表,包含兩個分區dt和ht表示日期和小時

2、啟用hive動态分區,隻需要在hive會話中設定兩個參數:

3、把partition_table001表某個日期分區下的資料load到目标表partition_table002 使用靜态分區時,必須指定分區的值,如:

此時我們發現一個問題,如果希望插入每天24小時的資料,則需要執行24次上面的語句。而動态分區會根據select出的結果自動判斷資料改load到哪個分區中去。

4、使用動态分區

hive先擷取select的最後兩個位置的dt和ht參數值,然後将這兩個值填寫到insert語句partition中的兩個dt和ht變量中,即動态分區是通過位置來對應分區值的。原始表select出來的值和輸出partition的值的關系僅僅是通過位置來确定的,和名字并沒有關系,比如這裡dt和st的名稱完全沒有關系。 隻需要一句SQL即可把20150617下的24個ht分區插到了新表中。