2017-04-20 7 views
0

년, 월, 일로 파티션 된 하이브에 외부 테이블이 있습니다. 그래서 한 파티션을 떨어 뜨 렸지만 여전히 쇼 파티션에서 볼 수 있습니다.파티션이 외부 테이블에 대해 삭제 되더라도 하이브에 계속 표시됩니다.

>use test_raw_tables; 
>show partitions test1_raw; 
[year=2016/month=01/day=01] 
[year=2017/month=03/day=24] 

> alter table test1_raw drop partition (year=2016, month=01, day=01); 
> refresh test1_raw; 
> show partitions test1_raw; 
[year=2016/month=01/day=01] 
[year=2017/month=03/day=24]  ---Still see the dropped partition here---- 

> msck repair table test1_raw; 
> show partitions test1_raw; 
[year=2016/month=01/day=01] 
[year=2017/month=03/day=24] ---Still see the dropped partition here---- 

임팔라에서 하이브를 엔진으로 실행 중입니다.

는 ('', 'TRANSACTION_ID', '문자열') test1_raw COL_NAME, DATA_TYPE, 주석 ('amount_hold', 'INT', '') ('ID', '지능', '') 설명 '년', '문자열', '') ('월', '문자열', '') ('일', '문자열', '') (' '', 'None', 'None') ('# 파티션 정보', None, None) ('# col_name', 'data_type', 'comment') ('달', '캐릭터', '') ('일', '캐릭터', '') 위치 'HDFS : // localhost를/SYS는/datalake/테스트/test1_raw'

무엇 인 여기서 문제가 있니? hdfs의 데이터는 해당 파티션을 삭제 한 후에 삭제됩니다. 문제를 파악할 수 없습니다.

+0

** ** (2) ** 코드를 실행중인 곳에서 테이블 정의 ** (2) **를 추가하십시오. 임팔라 - 껍질? 하이브? 직선? –

+0

@DuduMarkovitz 테이블은 외부 테이블입니다. 하이브 셸에서 쿼리 실행. –

+0

'refresh'는 하이브가 아닌 임팔라 명령입니다. 관련 파티션 정의를 포함하여 테이블 정의뿐만 아니라 어디에서 실행 중인지 알아야합니다. 파일 시스템에서 경로가 어떻게 보이는지 보여주십시오. –

답변

0

테이블 정의 열에서 연, 월, 일은 문자열 형식입니다. Pls는 '2016', '01'및 '01'로 시도합니다. 아래 코드를 사용했는데 작동합니다.

alter table test1_raw drop partition (year='2016', month='01', day='01'); 
+0

올바른 경우 올바른 답변을 작성하십시오. –