복붙노트

[HADOOP] 하이브 맵퍼 작업을 늘리지 못합니까?

HADOOP

하이브 맵퍼 작업을 늘리지 못합니까?

하나의 150MB 파일 만있는 관리 하이브 테이블이 있습니다. 그런 다음 "select count (*) from tbl"을 실행하고 2 개의 매퍼를 사용합니다. 더 큰 숫자로 설정하고 싶습니다.

먼저 'set mapred.max.split.size = 8388608;'을 시도 했으므로 잘하면 19 개의 매퍼가 사용됩니다. 그러나 그것은 단지 3을 사용합니다. 어떻게 든 그것은 여전히 ​​64MB만큼 입력을 분리합니다. 또한 'set dfs.block.size = 8388608;'도 사용했지만 작동하지 않습니다.

그런 다음 바닐라 맵 축소 작업을 시도해 보았습니다. 처음에는 3 개의 맵퍼를 사용하고 mapred.max.split.size를 설정하면 19를 사용합니다. 따라서 하이브에 문제가 있습니다.

CombineHiveInputFormat, ExecDriver 등의 Hive 소스 코드를 읽은 단서를 찾을 수 없습니다.

그 밖의 설정에는 어떤 것이 있습니까?

해결법

  1. ==============================

    1.저는 하이브 메일 링리스트에서받은 @javadba의 답변을 결합했습니다. 해결책은 다음과 같습니다.

    저는 하이브 메일 링리스트에서받은 @javadba의 답변을 결합했습니다. 해결책은 다음과 같습니다.

    set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
    set mapred.map.tasks = 20;
    select count(*) from dw_stage.st_dw_marketing_touch_pi_metrics_basic;
    

    메일 링리스트에서 :

    나중에 소스 코드를 파헤칩니다.

  2. ==============================

    2.다음을 추가하십시오.

    다음을 추가하십시오.

    set hive.merge.mapfiles=false;
    set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
    
  3. from https://stackoverflow.com/questions/20816726/fail-to-increase-hive-mapper-tasks by cc-by-sa and MIT license