복붙노트

[HADOOP] 파티션 디렉토리가 존재하지 않는 경우 집계 쿼리는 하이브에 실패

HADOOP

파티션 디렉토리가 존재하지 않는 경우 집계 쿼리는 하이브에 실패

나는 TEZ와 하이브 V1.2.1을 사용하고 있습니다. 나는 외부 파티션 테이블이 있습니다. 격벽은 시간당 및 양식 p = yyyy_mm_dd_hh의이다. 상황은 HDFS에서 이러한 파티션 디렉토리가 언젠가 삭제 될 가능성이 있다는 것입니다. 그들은이 삭제 된 후, 하이브는 여전히 파티션에 대한 메타 데이터를 포함하고 명령 '쇼 파티션은'여전히 그 디렉토리 HDFS에서 삭제 된 파티션을 나열합니다. 일반적으로이 문제, 그리고 (디렉토리 삭제) 단순히 빈 결과 집합을 초래 파티션에 대한 선택 쿼리를 일으킬 가능성이되지 않습니다 :

hive> select * from test_tab where p='2015_01_01_01';
OK
Time taken: 2.168 seconds

그러나, 같은 파티션에 대한 어떠한 집계 쿼리를 실행에 오류가 발생합니다 :

hive> select count(*) from test_tab where p='2015_01_01_01';
FAILED: SemanticException java.io.FileNotFoundException: File hdfs://localhost:8020/user/root/data/test_db/test_tab/p=2015_01_01_01 does not exist.

나는 다른 선택 쿼리에서와 집계 쿼리에서 동일한 동작이 필요합니다. 이것은 아마도 하이브의 버그입니다. 이 문제에 대한 해결 방법-힌트를 주시면 감사하겠습니다. 친애하는.

해결법

  1. ==============================

    1.명령 아래 실행

    명령 아래 실행

    다음 쿼리를 실행

  2. from https://stackoverflow.com/questions/37456932/aggregate-queries-fail-in-hive-if-partition-directory-doesnt-exist by cc-by-sa and MIT license