hive 動態分區與靜態分區,靜態分區需要制定分區字段的值插入分區數據,動態分區可以根據分區字段的值自動插入對應分區
靜態分區:須指定分區字段的值
insert overwrite table test.tmp_edw_customer_event_detail_di partition(dt='20161218')
select
cid
, event_code
, event_name
, event_channel_type_code
, event_time
, event_user_role_code
, event_extra_data
, event_source_table_name
, event_source_table_code
, event_origin_id
, event_latitude
, event_longitude
, event_trace_request_id
, load_job_number
, load_job_name
, insert_timestamp
, source_system_code
from test.ic_xf_event_from_user_trace_filter_init
where to_date(event_time) <= '2016-12-18';
動態分區:插入字段個數和順序與目標表一致
-- 設置開啓動態分區參數
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table test.tmp_edw_customer_event_detail_di partition(dt)
select
cid
, event_code
, event_name
, event_channel_type_code
, event_time
, event_user_role_code
, event_extra_data
, event_source_table_name
, event_source_table_code
, event_origin_id
, event_latitude
, event_longitude
, event_trace_request_id
, load_job_number
, load_job_name
, insert_timestamp
, source_system_code
, regexp_replace(to_date(event_time), '-', '') as dt
from test.ic_xf_event_from_user_trace_filter_init
where to_date(event_time) > '2016-12-18';