2012-01-15 18 views
6

Soy nuevo en la colmena y he encontrado un problema,¿Cómo hacer que colmena ejecute mapreduce trabajos al mismo tiempo?

Tengo una tabla en la colmena de la siguiente manera:

create table td(id int, time string, ip string, v1 bigint, v2 int, v3 int, 
v4 int, v5 bigint, v6 int) PARTITIONED BY(dt STRING) 
ROW FORMAT DELIMITED FIELDS 
TERMINATED BY ',' lines TERMINATED BY '\n' ; 

y corro un sql como:

from td 
INSERT OVERWRITE DIRECTORY '/tmp/total.out' select count(v1) 
INSERT OVERWRITE DIRECTORY '/tmp/totaldistinct.out' select count(distinct v1) 
INSERT OVERWRITE DIRECTORY '/tmp/distinctuin.out' select distinct v1 

INSERT OVERWRITE DIRECTORY '/tmp/v4.out' select v4 , count(v1), count(distinct v1) group by v4 
INSERT OVERWRITE DIRECTORY '/tmp/v3v4.out' select v3, v4 , count(v1), count(distinct v1) group by v3, v4 

INSERT OVERWRITE DIRECTORY '/tmp/v426.out' select count(v1), count(distinct v1) where v4=2 or v4=6 
INSERT OVERWRITE DIRECTORY '/tmp/v3v426.out' select v3, count(v1), count(distinct v1) where v4=2 or v4=6 group by v3 

INSERT OVERWRITE DIRECTORY '/tmp/v415.out' select count(v1), count(distinct v1) where v4=1 or v4=5 
INSERT OVERWRITE DIRECTORY '/tmp/v3v415.out' select v3, count(v1), count(distinct v1) where v4=1 or v4=5 group by v3 

se funciona, y el resultado de salida es lo que quiero.

pero hay un problema, hive genera 9 trabajos de reducción de mapas y ejecuta estos trabajos uno por uno.

corro explicar en esta consulta, y me dieron el siguiente mensaje:

STAGE DEPENDENCIES: 
    Stage-9 is a root stage 
    Stage-0 depends on stages: Stage-9 
    Stage-10 depends on stages: Stage-9 
    Stage-1 depends on stages: Stage-10 
    Stage-11 depends on stages: Stage-9 
    Stage-2 depends on stages: Stage-11 
    Stage-12 depends on stages: Stage-9 
    Stage-3 depends on stages: Stage-12 
    Stage-13 depends on stages: Stage-9 
    Stage-4 depends on stages: Stage-13 
    Stage-14 depends on stages: Stage-9 
    Stage-5 depends on stages: Stage-14 
    Stage-15 depends on stages: Stage-9 
    Stage-6 depends on stages: Stage-15 
    Stage-16 depends on stages: Stage-9 
    Stage-7 depends on stages: Stage-16 
    Stage-17 depends on stages: Stage-9 
    Stage-8 depends on stages: Stage-17 

parece que la etapa 9-17 se corresponde con MapReduce trabajo 0-8
pero desde el mensaje de explicar anteriormente, la etapa 10-17 solo depende de la etapa 9,
, entonces tengo una pregunta, ¿por qué el trabajo 1-8 no se puede ejecutar al mismo tiempo?

¿O cómo puedo hacer que el trabajo 1-8 se ejecute al mismo tiempo?

¡Muchas gracias por su ayuda!

Respuesta

5

En hive-default.xml, hay una propiedad llamada "hive.exec.parallel" que podría permitir ejecutar el trabajo en paralelo. El valor predeterminado es "falso". Puedes cambiarlo a "verdadero" para adquirir esta habilidad. Puede usar otra propiedad "hive.exec.parallel.thread.number" para controlar cuántos trabajos se pueden ejecutar como máximo en paralelo.

Para más detalles: https://issues.apache.org/jira/browse/HIVE-549

+0

esto funciona! ¡muchas gracias! – SSolid

+0

@kai zhang Entiendo que cuando "hive.exec.parallel" se establece en verdadero, las tareas independientes se ejecutarán en paralelo. ¿Puedes pensar en algún caso de uso donde se desee configurarlo en falso? –

+0

@MayankJaiswal De acuerdo a mi conocimiento, "hive.exec.parallel" se sugiere como "falso" en una versión muy temprana (por ejemplo, 0.7). Creo que la única razón es que la función no es bastante estable en ese momento. –

Cuestiones relacionadas