hive多分區表創建+數據導入


步驟:建分區表、建臨時表、臨時表數據寫入、臨時表寫入數據到分區表

 

1、分區參數介紹

 
  • hive.exec.dynamic.partition:是否啟動動態分區。默認false。

  • hive.exec.dynamic.partition.mode:打開動態分區后,動態分區的模式為strict和nonstrict。

    • strict可設置為靜態和半動態,要求至少包含一個靜態分區列。

    • nonstrict可設置為靜態、半動態和動態,動態必須設置此參數。

  • hive.exec.max.dynamic.partitions:允許的最大的動態分區的個數。默認1000。

  • hive.exec.max.dynamic.partitions.pernode:一個mapreduce job所允許的最大的動態分區的個數。默認是100。

 

2、分區表的創建

 

(1)分區表創建

 
create table test.user_list( user_id string, msisdn string, imsi string) partitioned by (city string,sdate string) row format delimited fields terminated by ','; 
 

(2)臨時表創建(輔助分區表測試)

 
create table test.user_list_tmp( user_id string, msisdn string, imsi string city string, sdate string) row format delimited fields terminated by ','; 
 

3、數據插入方式

 

(1)靜態分區插入數據:

 
insert into table user_list partition(city='HANGZHOU',sdate='20200101') select t.user_id, t.msisdn, t.imsi from test.user_list_tmp t 
 

(2)動靜混合分區插入數據

 
set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=strick; --set hive.exec.dynamic.partition.mode=nonstrick; insert into table user_list partition(city='HANGZHOU',sdate='${sdate}') select t.user_id, t.msisdn, t.imsi, t.sdate from test.user_list_tmp t 
 

注意:動靜分區混合時,靜態分區參數必須放置在前面。

 

(3)動態分區插入數據

 
set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrick; insert into table user_list partition(city='${city}',sdate='${sdate}') select t.user_id, t.msisdn, t.imsi, t.city, t.sdate from test.user_list_tmp t 
 

4、insert into 和 insert overwrite

 

insert into示例:

 
insert into table user_list partition(city='HANGZHOU',sdate='20200101') select t.user_id, t.msisdn, t.imsi from test.user_list_tmp t 
 

insert overwrite示例:

 
insert overwrite table user_list partition(city='HANGZHOU',sdate='20200101') select t.user_id, t.msisdn, t.imsi from test.user_list_tmp t 
 

兩者區別:insert into直接追加到表中數據的尾部,而insert overwrite會重寫數據,既先進行刪除,再寫入。

 

 

轉自:http://blog.sina.com.cn/s/blog_155cf0b760102x1ij.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM