2012-01-15 7 views
6

Sono nuovo di alveare e ho riscontrato un problema,Come eseguire l'hive eseguire lavori di ridisegno simultaneo?

Ho una tabella in alveare come questo:

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' ; 

e corro uno sql come:

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 

esso funziona, e il risultato finale è quello che voglio.

ma c'è un problema, l'hive genera 9 processi di ridimensionamento ed esegue questi lavori uno per uno.

corro spiegare su questa query, e ho ottenuto il seguente messaggio:

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 

sembra che fase 9-17 corrisponda ai MapReduce lavoro 0-8
ma dal messaggio spiegare sopra, palcoscenico 10-17 dipende solo dalla fase 9,
quindi ho una domanda, perché il lavoro 1-8 non può essere eseguito contemporaneamente?

Oppure come è possibile eseguire contemporaneamente il lavoro 1-8?

Grazie mille per il vostro aiuto!

risposta

5

In hive-default.xml, esiste una proprietà denominata "hive.exec.parallel" che può abilitare il lavoro di esecuzione in parallelo. Il valore predefinito è falso". Puoi cambiarlo in "vero" per acquisire questa abilità. È possibile utilizzare un'altra proprietà "hive.exec.parallel.thread.number" per controllare quanti lavori possono essere eseguiti al massimo in parallelo.

Per ulteriori dettagli: https://issues.apache.org/jira/browse/HIVE-549

+0

questo funziona! Grazie mille! – SSolid

+0

@kai zhang Capisco che quando "hive.exec.parallel" è impostato su true, le attività indipendenti verranno eseguite in parallelo. Riesci a pensare a un caso d'uso in cui si desidera impostarlo su false? –

+0

@MayankJaiswal Base su mia conoscenza, "hive.exec.parallel" è suggerito per essere "falso" nella versione molto precoce (per esempio 0.7). Penso che l'unica ragione sia che la funzione non è abbastanza stabile in quel momento. –

Problemi correlati