2017-07-07 4 views
1

Ich führe eine Hive-Abfrage wie TableA Linke Join TableB auf TableA.col1 = TableB.col1 und TableA.col2 = TableB.col2. Tabelle A hat 1,8 Milliarden Daten und Tabelle B hat 31 Millionen Datensätze. Jetzt werden die letzten Reduzierungen in meinem Join nicht abgeschlossen und es läuft lange.Skew Daten verursachen lange laufende Abfrage im Bienenstock

Es kann aufgrund von Skew-Daten sein. Ich habe versucht MAPJOIN und die Abfrage fehlgeschlagen wegen der großen Datenmenge für TabelleA. Gibt es andere Möglichkeiten, diese besser zu bewältigen?

Die Aufgabe, die ich für lange sehen läuft wie unten

reduce > copy task(attempt_1498868574233_185232_m_001336_0 succeeded at 8.94 MB/s) Aggregated copy rate(1121 of 2532 at 108.94 MB/s) 

Was genau ist es versuchen, in diesem Schritt zu tun?

+0

Siehe hier: https://stackoverflow.com/a/37414611/2700344 – leftjoin

+0

@leftjoin, keine Notwendigkeit für die manuelle Arbeit-around. Hive unterstützt Schrägverknüpfungen. –

Antwort

0

gesetzt hive.optimize.skewjoin zu true

hive.optimize.skewjoin
Standardwert: false
hinzugefügt: Hive 0.6.0
Ob Skew ermöglichen Optimierung verbinden.

Vielleicht wollen Sie auch zu stimmen hive.skewjoin.key, hive.skewjoin.mapjoin.map.tasks und hive.skewjoin.mapjoin.min.split.

hive.skewjoin.key
Standardwert: 100000
hinzugefügt: Hive 0.6.0
fest, ob wir einen Skew-Schlüssel bekommen mitmachen. Wenn wir mehr als die angegebene Anzahl von Zeilen mit demselben Schlüssel im Join-Operator sehen, denken wir den Schlüssel als Skew-Join-Schlüssel.

hive.skewjoin.mapjoin.map.tasks
Standardwert: 10000
hinzugefügt: Hive 0.6.0
die Anzahl der Karten Aufgabe in der Follow-up-Karte Job für einen Skew-Join verwendet Bestimmen Beitreten. Es sollte zusammen mit hive.skewjoin.mapjoin.min.split verwendet werden, um eine feinkörnige Kontrolle durchzuführen.

hive.skewjoin.mapjoin.min.split
Standardwert: 33.554.432
hinzugefügt: Hive 0.6.0
Bestimmen Sie die Anzahl der Karten Aufgabe höchstens verwendet in der up Karte Job beitreten folgen ein Skew-Join durch Angabe der minimalen Split-Größe. Es sollte zusammen mit hive.skewjoin.mapjoin.map.tasks zu eine feinkörnige Kontrolle durchgeführt werden.

https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties