쿼리 실행중 MetaException이 발생하는 경우가 있습니다. 메타스토어에서 쿼리상의 테이블 정보를 조회하는 과정에서 오류가 발생하여 출력됩니다.
이때 hive CLI 상에서는 MetaException의 쿼리만 확인이 가능하기 때문에 확인이 힘든 경우가 많습니다. 따라서 이경우에는 메타스토어의 로그를 확인하면 정확한 오류을 확인할 수 있습니다.
이번에 발생한 오류는 다음과 같았습니다.
2018-11-30T05:19:09,495 ERROR [main([])]: ql.Driver (SessionState.java:printError(1097)) - FAILED: SemanticException MetaException(message:Exception thrown when executing query : SELECT DISTINCT 'org.apache.hadoop.hive.metastore.model.MTable' AS NUCLEUS_TYPE,A0.CREATE_TIME,A0.LAST_ACCESS_TIME,A0.OWNER,A0.RETENTION,A0.TBL_NAME,A0.TBL_TYPE,A0.TBL_ID FROM TBLS A0 LEFT OUTER JOIN DBS B0 ON A0.DB_ID = B0.DB_ID WHERE A0.TBL_NAME = ? AND B0.`NAME` = ?)
org.apache.hadoop.hive.ql.parse.SemanticException: MetaException(message:Exception thrown when executing query : SELECT DISTINCT 'org.apache.hadoop.hive.metastore.model.MTable' AS NUCLEUS_TYPE,A0.CREATE_TIME,A0.LAST_ACCESS_TIME,A0.OWNER,A0.RETENTION,A0.TBL_NAME,A0.TBL_TYPE,A0.TBL_ID FROM TBLS A0 LEFT OUTER JOIN DBS B0 ON A0.DB_ID = B0.DB_ID WHERE A0.TBL_NAME = ? AND B0.`NAME` = ?)
at org.apache.hadoop.hive.ql.optimizer.pcr.PcrOpProcFactory$FilterPCR.process(PcrOpProcFactory.java:114)
이를 이용해서는 정확한 오류를 확인하기 힘들어서 메타스토어의 오류를 확인하니, 쿼리의 조인 테이블에는 WHERE 조건으로 파티션 정보가 없어서 모든 파티션의 정보를 읽어와서 오류가 발생하였습니다.
조인 테이블의 WHERE 조건에 파티션 정보를 입력하여 문제를 해결하였습니다.
'빅데이터 > hive' 카테고리의 다른 글
[hive] 작은 사이즈의 파일 머지 설정과 그로 인한 오버헤드 (0) | 2019.02.20 |
---|---|
[hive] 테이블 파티션의 로케이션 정보 확인, 생성, 수정 방법 (0) | 2019.01.17 |
[hive] inline() 함수를 이용하여 JSON 문자열 테이블화 예제 (0) | 2018.11.21 |
[hive][tez] TEZ엔진의 메모리 설정 방법 (0) | 2018.08.03 |
[hive][tez] tez의 실행 시간 요약 확인을 위한 옵션(hive.tez.exec.print.summary)및 GC시간의 하이브 튜닝 (0) | 2018.07.11 |