Hive - Queries against partitioned tables without a partition filter are disabled for safety reasons 에러 처리

     

    Hive - Queries against partitioned tables without a partition filter are disabled for safety reasons 에러 처리

    Hue에서 쿼리를 실행했는데, 위와 같은 에러가 발생한다면?

    분명 Zeppelin에서 동작하는 것을 확인했는데, Hue에서만 안된다면 Zeppelin에서만 써야 할까?

    만약 Hive 쿼리를 실행했는데, 위와 같은 에러가 발생한다면, 사실 에러 문구 속에 해결책이 잘 설명되어 있다.

     

    에러 메시지 샘플

    Error while compling statement: FAILED: SemanticException Queries against partitioned tables without a partition filter are disabled for safety reasons. If you know what you are doing, please aet hive.strict.checkslarge.query to false and that hive.mapred.mode is not set to 'strict' to proceed. Note that if you may get errors or incorrect results if you make a mistake while using some of the unsafe features. No partition predicate for Alias "XXX" Table "XXX"

    이런 유형의 에러 메시지가 노출된다.

     

    원인

    위의 문구가 스스로 설명하고 있듯이, 대용량 데이터에 대해 범위 조건을 부여하여 쿼리의 성능을 향상시킬 수 있다. 만약, where 조건에 이러한 필터링 조건이 없다면 대용량 데이터 전체를 스캔할 수 있으므로, 일종의 방어 옵션이 설정된 경우 where 조건 없이 쿼리를 실행하면 위와 같은 에러가 발생한다.

     

    반응형

     

    해결 방안

    문장에 써 있듯이 제약 조건을 풀고 쿼리를 실행하면 된다.

    If you know what you are doing 이라는 문장을 새겨 보자.

    무슨 일을 하려고 하는지 알고 쓰라는 것이다.

    해당 테이블에 어떤 식으로 파티션이 생성되어 있는지 보려면 다음의 명령어를 실행하자.

    $ show partitions table명;

    그리고, 위의 에러가 발생했지만 where 조건을 명시하지 않고 쿼리를 실행하고 싶다면 다음과 같이 실행 후, 원래 실행하려던 쿼리를 다시 실행해 보자.

    $ set hive.mapred.mode = nonstrict;

    그러면, 에러가 발생했던 쿼리가 정상적으로 실행되는 것을 확인할 수 있다.

    'Development > Hadoop, NoSQL, BigData' 카테고리의 다른 글

    Redis pub/sub 소개  (2) 2021.06.17
    Redis Geo - Geospatial 명령어  (0) 2021.06.07
    Redis 자료 구조 - ZSet (Sorted Set)  (0) 2021.06.02
    Redis 자료 구조 - Hash  (0) 2021.05.27
    Redis 자료 구조 - Set  (0) 2021.05.12
    Redis 자료 구조 - List  (0) 2021.05.10
    Redis 자료 구조 - String  (0) 2021.05.06
    Memcached vs. Redis - 특징 비교  (0) 2021.05.03

    댓글

    Designed by JB FACTORY