Viene visualizzato questo errore durante l'esecuzione di un join semplice tra due tabelle. Eseguo questa query nella riga di comando Hive. Sto nominando tabella come & b. La tabella a è la tabella interna Hive eb è la tabella esterna (in Cassandra). La tabella a ha solo 1610 righe e la tabella b ha ~ 8 milioni di righe. Nello scenario di produzione attuale, Tabella a potrebbe arrivare fino a 100.000 righe. Si riporta di seguito il mio unirsi con la tabella b come l'ultima tabella nel joinHive Query Execution Error, codice di ritorno 3 da MapredLocalTask
SELEZIONA a.col1, a.col2, b.col3, b.col4 DAL un JOIN b ON (a.col1 = b.col1 AND a.col2 = b.col2);
Di seguito si riporta l'errore
posti di lavoro totale MapReduce = 1
log di esecuzione a: /tmp/pricadmn/.log
2014-04-09 07:15:36 A partire da lancio compito locale per elaborare la join della mappa; memoria massima = 932184064
2014-04-09 07:16:41 Elaborazione righe: 200000 Dimensioni hash: 199999 Utilizzo memoria: 197529208 percentuale: 0,212
2014-04-09 07:17:12 Elaborazione righe: 300000 Dimensioni hashtable: 299999 utilizzo memoria: 163.894.528 percentuale: 0.176
2014/04/09 07:17:43 righe Processing: 400000 dimensione Hashtable: utilizzo 399999 memoria: 347.109.936 percentuale: 0,372
...
...
...
2014-04-09 07:24:29 Elaborazione righe: 1600000 Dimensioni hash: 1599999 Utilizzo memoria: 714454400 percentuale: 0,766
2014/04/09 07:25:03 filari di lavorazione: 1700000 dimensioni Hashtable: utilizzo 1.699.999 di memoria: 901.427.928 percentuali: 0,967
Esecuzione non riuscita con stato di uscita: 3
Ottenere informazioni di errore
Task fallito!
Task ID:
Stage-5
Logs:
/u/applic/pricadmn/dse-4.0.1/logs/hive/hive.log
FALLITA: esecuzione di codice errore, ritorno 3 da org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
Sto utilizzando DSE 4.0.1. Di seguito sono alcune delle mie impostazioni che si potrebbe essere interessati a
mapred.map.child.java.opts = -Xmx512M
mapred.reduce.child.java.opts = -Xmx512M
mapred.reduce.parallel.copies = 20
hive.auto.convert.join = true
ho aumentato mapred.map.child.java.opts a 1G e ho avuto negli ultimi più record e poi errored fuori. Non sembra una buona soluzione. Inoltre ho cambiato l'ordine nel join ma nessun aiuto. Ho visto questo link Hive Map join : out of memory Exception ma non ha risolto il mio problema.
Per me sembra che Hive stia cercando di mettere in memoria la tabella più grande durante la fase di attività locale che sono confuso. Secondo la mia comprensione, la seconda tabella (nel mio caso la tabella b) dovrebbe essere in streaming. Correggimi se sbaglio. Ogni aiuto per risolvere questo problema è molto apprezzato.
La tabella b è la mia tabella più grande ed è l'ultimo join nella mia query. Se non ti dispiace puoi ri-scrivere la mia domanda, potrebbe essere mi manca qualcosa. – user3517633