본문 바로가기
빅데이터/hive

[hive] hive 쿼리 where 조건의 in 사용시 메타 스토어 오류

by hs_seo 2018. 4. 9.

hive의 쿼리에서 in 을 이용하여 데이터를 비교할 때 다음과 같이 transform 구문을 이용하여 처리하였다.

그랬는데 비교부분 테이블의 파티션이 늘어나면서 다음과 같이 BufferOverflowException 이 발생하였다.  


SELECT *

  FROM table1

 WHERE create_date in ( 

       select explode( split( yyy.date_list, ',' ) )

         ...

  )


파티션의 정보를 비교하다가 버퍼 오퍼플로우 익셉션이 발생하였다. 


2018-09-09T01:11:11,111 WARN  [pool-5-thread-200([])]: 

metastore.MetaStoreDirectSql (MetaStoreDirectSql.java:executeWithArray(1750)) - Failed to execute [

select "PARTITIONS"."PART_ID" 

  from "PARTITIONS"  inner join "TBLS" on "PARTITIONS"."TBL_ID" = "TBLS"."TBL_ID"     

   and "TBLS"."TBL_NAME" = ?   inner join "DBS" on "TBLS"."DB_ID" = "DBS"."DB_ID"      

   and "DBS"."NAME" = ?  

 where "PARTITIONS"."PART_NAME" in (?,?,?,?,?,?,

java.nio.BufferOverflowException


우선 해결방법은 쿼리의 in 비교 부분을 explode 로 하지 않고 고정 문자열로 하던지, between 구문으로 수정한다. 

그리고 하이브 메타스토어를 재실행한다. 


hive --service metastore


반응형