Hive는 시간별 파티션에서 중복 데이터를 제거합니다.
1. 시간별 파티션 데이터 중복 제거
시간별 파티션 데이터가 중복 제거된 후 하이브 임시 테이블에 기록됩니다.
with to_json_map as (
select distinct _track_id
,time
,distinct_id
,to_json(lib) as lib
,event
,to_json(properties) as properties
,_flush_time
,map_id
,user_id
,login_id
,anonymous_id
,recv_time
,to_json(extractor) as extractor
,project_id
,project
,ver
,type
,device_id
from ods_tracking_data_kafka_prod.sensor_tracking_kafka_nioapp_prod_1h_i
where datetime = '2023061417'
),
from_json_map as (
select
_track_id as track_id
,time
,distinct_id
,from_json(lib,'map<string,string>') as lib
,event
,from_json(properties,'map<string,string>') as properties
from to_json_map
)
insert overwrite tmp.app_prod_20230614
partition (datetime = '2023061417')
select * from from_json_map
2. 시간 파티션 데이터 재작성
임시 테이블의 데이터를 다시 시간별 파티션에 씁니다.
insert overwrite ods_tracking_data_kafka_prod.sensor_tracking_kafka_nioapp_prod_1h_i
partition (datetime = '2023061417')
select
track_id as _track_id
,time
,distinct_id
,lib
,event
,properties
from tmp.app_prod_20230614
where datetime = '2023061417'