데이터웨어 하우스 구축의 데이터 추출 측면은 종종 증가 비즈니스 라이브러리 데이터를 추출해야합니다. 그러나 사업은 상태 변경, 당신은 하이브를 업데이트 동기화 데이터 변경에 필요한 시간에 따라 일어날 것 같은 라이브러리 데이터의 계층이 아니다. 오라클 데이터웨어 하우스 작업을 수행하는 데 사용하면 병합 방법 병합 이전 및 새 데이터를 사용할 수 있습니다. 그러나,이 기능하지 않는 벌집 본원 Sqoop을 추출하여 목적은 자동적으로 데이터를 병합.
테이블 디자인
테이블은 세 가지로 구분된다 추출
- PT 필드 파티션에 따라 매일 결합의 스냅 샷을 저장 테이블, _arc
- PT 필드 분할에 따라, 상기 추출 된 데이터 일 증분 저장하는 테이블 _Inc
- 접미사 테이블이없는 한, 후속 최종 테이블 ETL 작업을 가리 킵니다.
단계
- 하이브 수입, 데이터 가져 오기 시트 _inc에 대한 사용 Sqoop을
- 전체를 사용하여 코어, 가입, 유착, SQL 합병의 조합이 파티션 데이터 테이블의 inc한다면 그 날과 아크 전날 분할 된 데이터 파티션 _arc 테이블을 병합 더 많은 일.
- 파티션 테이블 포인트의 마지막 날은 하이브 명령 세트 위치에 따라 _arc.
코드 포인트 :
병합 SQL
use ods;
insert overwrite table mytable_arc partition (pt='20200407')
select coalesce(a.id,b.id), if(a.id is null, b.type, a.type), if(a.id is null, b.amt, a.amt) from (
select id, type, amt
from mytable_inc where pt='20200407'
) a full join (
select id, type, amt
from mytable_arc where pt='20200406'
) b on a.%s = b.%s"
하이브 설정 위치
use ods;
alter table mytable set location 'hdfs://hadoop01:9000/user/hive/warehouse/ods.db/mytable_arc/pt=20200407'"