Hive는 시간별 테이블에서 중복 데이터를 제거합니다.

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'

Supongo que te gusta

Origin blog.csdn.net/zhengzaifeidelushang/article/details/131485319
Recomendado
Clasificación