Ich erhalte diesen Fehler beim Ausführen einer einfachen Verbindung zwischen zwei Tabellen. Ich führe diese Abfrage in der Hive-Befehlszeile aus. Ich benenne Tabelle als & amp; b. Tabelle a ist eine interne Hive-Tabelle und b ist eine externe Tabelle (in Cassandra). Tabelle a hat nur 1610 Zeilen und Tabelle b hat ~ 8 Millionen Zeilen. Im tatsächlichen Produktionsszenario könnte Tabelle a bis zu 100.000 Zeilen erreichen. Im Folgenden sehen Sie meinen Join mit Tabelle b als letzte Tabelle im Join
WÄHLEN Sie a.col1, a.col2, b.col3, b.col4 aus einem Join b on (a.col1 = b.col1 und a.col2 = b.col2);
Im Folgenden sehen Sie den Fehler
Insgesamt MapReduce-Jobs = 1
Ausführungsprotokoll unter: /tmp/pricadmn/.log
2014-04-09 07:15:36 Starten der lokalen Aufgabe zum Bearbeiten der Map-Verknüpfung; maximaler Speicher = 932184064
2014-04-09 07:16:41 Zeilen verarbeiten: 200000 Hashtable-Größe: 199999 Speicherauslastung: 197529208 Prozent: 0.212
2014-04-09 07:17:12 Zeilen verarbeiten: 300000 Hashtable Größe: 299999 Speicherauslastung: 163894528 Prozentsatz: 0.176
2014-04-09 07:17:43 Zeilen verarbeiten: 400000 Hashtable-Größe: 399999 Speicherauslastung: 347109936 Prozent: 0,372
...
...
...
2014-04-09 07:24:29 Zeilen verarbeiten: 1600000 Hashtable-Größe: 1599999 Speicherauslastung: 714454400 Prozentsatz: 0,766
2014-04-09 07:25:03 Zeilen verarbeiten: 1700000 Hashtable Größe: 1699999 Speicherauslastung: 901427928 Prozentsatz: 0.967
Ausführung mit Exit-Status fehlgeschlagen: 3
Erhalten von Fehlerinformationen
Aufgabe fehlgeschlagen!
Aufgaben-ID:
Stufe-5
Protokolle:
/u/applic/pricadmn/dse-4.0.1/logs/hive/hive.log
FAILED: Execution Error, Rückgabecode 3 von org.apache.hadoop.hive.ql.exe.mr.MapredLocalTask
Ich verwende DSE 4.0.1. Im Folgenden finden Sie einige meiner Einstellungen, an denen Sie interessiert sein könnten. Maptrd.map.child.java.opts = -Xmx512M
mapred.reduce.child.java.opts = -Xmx512M
mapred.reduce.parallel.copies = 20
hive.auto.convert.join = true
Ich habe mapred.map.child.java.opts auf 1G erhöht, und ich habe einige weitere Datensätze übersprungen und dann Fehler gemacht. Es sieht nicht nach einer guten Lösung aus. Auch ich habe die Reihenfolge im Join geändert aber keine Hilfe. Ich habe diesen Link Hive Map Join: nicht genügend Arbeitsspeicher-Ausnahme gesehen, aber didn Löse mein Problem nicht.
Für mich sieht es so aus, dass Hive versucht, die größere Tabelle während der lokalen Task-Phase in den Speicher zu legen, was ich verwirrt habe. Nach meinem Verständnis sollte die zweite Tabelle (in meinem Fall Tabelle b) hineingestreamt werden. Korrigiere mich, wenn ich falsch liege. Jede Hilfe bei der Lösung dieses Problems wird sehr geschätzt.
Es scheint, dass Ihre Aufgabe nicht mehr ausreicht. Überprüfen Sie Zeile 324 der MapredLocalTask-Klasse .
%Vor%Tags und Links hive cassandra-2.0 hiveql datastax-enterprise