티스토리 뷰
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
'빅데이터 > hive' 카테고리의 다른 글
[hive] hive에서 함수용 테스트 array, map 데이터 생성하는 법 (0) | 2018.04.12 |
---|---|
[hive] rank() 함수 처리중 Caused by: org.apache.hive.com.esotericsoftware.kryo.KryoException: java.lang.IndexOutOfBoundsException (0) | 2018.04.09 |
[hive] Hive의 데이터를 CSV 형태의 파일로 export 하는 방법 (0) | 2018.03.30 |
[hive] 하이브에서 insert, delete, update 사용 (0) | 2018.03.30 |
[hive] CBO처리중 힌트 사용시 오류 (0) | 2018.03.29 |
- Total
- Today
- Yesterday
- 하둡
- yarn
- bash
- 정올
- 파이썬
- AWS
- emr
- 다이나믹
- build
- hbase
- 알고리즘
- oozie
- Linux
- S3
- mysql
- airflow
- 백준
- nodejs
- 하이브
- SQL
- Hadoop
- HIVE
- ubuntu
- Tez
- HDFS
- SPARK
- 오류
- error
- java
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |