[hive] 하이브 테이블 조회시 파티션 개수 제약하기

2019. 5. 22. 16:18·빅데이터/hive

하이브에서 테이블을 조회할 때 where 조건에 파티션 정보를 이용하면 하이브 메타스토어에서는 테이블의 파티션 정보를 가져와서 데이터를 조회할 로케이션을 설정합니다.

 

이때 MetaStoreDirectSql.java 에서 다음의쿼리를 이용하여 파티션 정보를 가져옵니다. 그런데 이때 파티션의 구간을 길게 잡아서 조회하는 파티션 개수가 많아지면 버퍼 오류가 발생하게 됩니다.

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
        at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:189) ~[?:1.8.0_121]
        at java.nio.ByteBuffer.put(ByteBuffer.java:859) ~[?:1.8.0_121]
        at org.mariadb.jdbc.internal.packet.send.SendExecutePrepareStatementPacket.send(SendExecutePrepareStatementPacket.java:105) ~[mariadb-java-client-1.3.6.jar:?]

이런 문제를 방지하기 위해서 하이브는 조회시에 파티션 개수를 제약할 수 있습니다.

다음의 설정값을 이용하면 조회시에 이용할 수 있는 파티션 개수를 설정할 수 있습니다.

hive.limit.query.max.table.partition
  • Default Value: -1
  • Added In: Hive 0.13.0 with HIVE-6492
  • Deprecated In: Hive 2.2.0 with HIVE-13884 (See hive.metastore.limit.partition.request.)
  • Removed In: Hive 3.0.0 with HIVE-17965

To protect the cluster, this controls how many partitions can be scanned for each partitioned table. The default value "-1" means no limit. The limit on partitions does not affect metadata-only queries.

 

hive> select yymmddval, count(*) 
    >   from p_table
    >  where yymmddval between 20180625 and 20190831 
    >  group by yymmddval 
    >  order by yymmddval;
FAILED: SemanticException Number of partitions scanned (=27) on table p_table exceeds limit (=15). This is controlled by hive.limit.query.max.table.partition.
반응형

'빅데이터 > hive' 카테고리의 다른 글

[hive] TEZ 작업중 GC overhead limit exceeded 오류 처리  (0) 2019.07.05
[hive] common.JvmPauseMonitor (JvmPauseMonitor.java:run(194)) - Detected pause in JVM or host machine (eg GC): pause of approximately 1727ms 메시지  (0) 2019.07.01
[hive] TEZ엔진을 이용한 UNION ALL INSERT문에서 서브디렉토리 생성을 막는 방법  (0) 2019.04.09
[hive] explain을 이용하여 CBO 적용 여부 확인  (0) 2019.04.05
[hive] TEZ엔진의 리듀서 처리중 셔플 단계의 OutOfMemoryError: Java heap space 오류 처리  (0) 2019.04.05
'빅데이터/hive' 카테고리의 다른 글
  • [hive] TEZ 작업중 GC overhead limit exceeded 오류 처리
  • [hive] common.JvmPauseMonitor (JvmPauseMonitor.java:run(194)) - Detected pause in JVM or host machine (eg GC): pause of approximately 1727ms 메시지
  • [hive] TEZ엔진을 이용한 UNION ALL INSERT문에서 서브디렉토리 생성을 막는 방법
  • [hive] explain을 이용하여 CBO 적용 여부 확인
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    bash
    Tez
    Hadoop
    ubuntu
    하둡
    java
    error
    파이썬
    정올
    다이나믹
    emr
    Python
    SPARK
    yarn
    mysql
    오류
    알고리즘
    AWS
    하이브
    k8s
    oozie
    Linux
    S3
    HDFS
    nodejs
    백준
    HIVE
    build
    hbase
    airflow
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[hive] 하이브 테이블 조회시 파티션 개수 제약하기
상단으로

티스토리툴바