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

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