[hive] dynamic partition 에서 리듀서를 하나만 사용하는 오류 수정

2017. 11. 15. 22:47·빅데이터/hive

하이브에서 다이나믹 파티션을 이용할 때 리듀서가 100개가 생겨도 

하나의 리듀서만 이용하여 데이터를 생성하여 작업이 오래 걸리는 경우가 있다. 


예를 들어 작업중 다음과 같은 쿼리를 이용하여 데이터를 적재하면 dynamic_partition 칼럼의 값을 이용하여 

파티션을 생성하고 값을 입력하게 된다. 


INSERT INTO TABLE target_table PARTITION (dynamic_partition_col)

SELECT col1, col2, dynamic_partition FROM source_table;


이때 dynamic_partition 칼럼의 값이 2개여서 파티션이 2개만 생성되게 되는데 

리듀서가 100개 생성되어도 마지막 리듀서 2개만 사용하여 데이터를 쓰는 문제가 발생하였다. 


이때 static partition 을 이용하여 데이터를 입력해도 문제가 해결되었지만, 

꼭 dynamic partition을 이용해야 하는 경우가 있다. 

* static partition으로도 문제가 해결되지 않는 경우도 있다. 


이때 다음의 옵션을 false 로 설정하면 여러개의 리듀서를 이용하여 값을 쓰게 된다. 


SET hive.optimize.sort.dynamic.partition=false;

[hive configuration의 설명]

When enabled, dynamic partitioning column will be globally sorted. This way we can keep only one record writer open for each partition value in the reducer thereby reducing the memory pressure on reducers.


위의 설명에 따르면 "동적파티션 칼럼을 전역적으로 정렬하게 된다. 이렇게 되면 각 리듀서에 하나의 recrod writer만 열어서 메모리의 입력을 줄일수 있다."고 한다. 

동적파티션 대상 파티션이 수백, 수천개일 경우에 사용하게 되면 성능 향상을 기대할 수 있지 않을까 싶다. 


http://www.ericlin.me/2016/03/hive-dynamic-insert-query-only-uses-1-reducer-out-of-thousands-of-reducers/

반응형
저작자표시 비영리 (새창열림)

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

[hive] JSON 문자열을 맵으로 변환(json string to map)  (0) 2017.12.12
[hive] 하이브 성능 개선#1 - CBO, Stat 를 이용하여 통계 쿼리 성능 개선  (0) 2017.11.29
[Hive][Tez] TEZ에서 파일머지를 처리하는 중 App master already running a DAG 오류 처리 방법  (0) 2017.11.10
[hive] 다이나믹 파티션 처리시 0 byte 파일이 생성될 때 설정  (0) 2017.10.27
[hive] tez로 처리중 File Merge 부분에서 오류  (0) 2017.10.24
'빅데이터/hive' 카테고리의 다른 글
  • [hive] JSON 문자열을 맵으로 변환(json string to map)
  • [hive] 하이브 성능 개선#1 - CBO, Stat 를 이용하여 통계 쿼리 성능 개선
  • [Hive][Tez] TEZ에서 파일머지를 처리하는 중 App master already running a DAG 오류 처리 방법
  • [hive] 다이나믹 파티션 처리시 0 byte 파일이 생성될 때 설정
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에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[hive] dynamic partition 에서 리듀서를 하나만 사용하는 오류 수정
상단으로

티스토리툴바