2016-05-23 8 views
0

Hortonworks HDP 2.3.0 - Nest 0,14Bienenstock linken äußeren lang join Lauf

Tabelle T1 (Partition auf spalte1, keine Eimer, ORC) ca. 120 Millionen Zeilen & 6 GB Datasize Tabelle T2 (Partition auf Col2, keine Eimer , ORC) ca. 200 M Zeilen & 6 MB Datasize

T1 auf T2 linken äußeren join (t1.col3 = t2.col3)

die obige Abfrage ist in der letzten Reduktionsphase in sowohl tez & mr Modus langer Lauf . Ich habe auch versucht, automatisch zu konvertieren True/False & explizite Mapjoin.

Noch läuft die Abfrage in der letzten Reduziererphase, niemals endend.

FYI - Wenn die Datengröße von T2 entweder 9k oder 1GB ist, wird die Abfrage beendet.

+0

Um. Einige weitere Verben und erklärender Text wären nett. Die Frage ist eher schwer zu verstehen. –

+0

Ich versuche, linken äußeren Join mit großen Tisch (6 GB) gegen kleine Tabelle (6 MB) durchzuführen. Im tez & mr-Modus endet dieser linke äußere Join niemals. Bei jeder Konfiguration (auto convert true/auto convert false) bleibt die Ausführung in der letzten Reduzierstufe des MapReduce Job/TEZ-Jobs hängen. –

Antwort

0

Das Problem ist vielleicht, dass es zu viele Bytes/Zeilen pro Reduzierer gibt. Wenn die Anwendungsausführung in dem letzten einzigen Reducer hängen bleibt, ist es höchstwahrscheinlich Datenschieflauf. Um dies zu überprüfen, wählen Sie in beiden Tabellen die obersten 5 Spalten3 aus. Wenn mehrere Datensätze den gleichen Schlüsselwert haben (z. B. 30%), ist der Versatz. Wenn es ein Skew ist, dann versuchen Sie, separat Skew-Taste, dann UNION ALL mit allen anderen Tasten Join beizutreten. Etwas wie folgt aus:

select * from 
T1 left outer join on t2 on (t1.col3 = t2.col3) and t1.col3=SKEW_VALUE 
union all 
select * from 
T1 left outer join on t2 on (t1.col3 = t2.col3) and t1.col3<>SKEW_VALUE 

Wenn die Anwendungsausführung in der letzten Reduktionsstufe stecken, nicht ein einziges Minderer oder wenige Reduzierungen, dann überprüfen bytes.per.reducer hive Einstellung, es ist vielleicht zu hoch.

+0

Hallo alles Danke für Ihre Antwort. Es gab riesige doppelte Werte auf Join-Schlüssel (col3), als Ergebnis werden 37 TB Daten geschrieben, was Reducer für eine lange Zeit laufen lässt. Nach dem Filtern der Duplikate lief die Abfrage besser –

0

Aber haben Sie versucht, Größe zu geben, um automatisch zu konvertieren verbinden, versuchen Sie geben Größe> als kleine Tabelle, die in den Speicher passen kann.

einstellen hive.auto.convert.join.noconditionaltask.size = 10000000;

Verwandte Themen