Wie behebe ich den Fehler "Illegale Partition" in hadoop?

8

Ich habe einen benutzerdefinierten Partitionierer geschrieben. Wenn die Anzahl der Reduzierungsaufgaben größer als 1 ist, schlägt der Job fehl. Dies ist die Ausnahme, die ich bekomme:

%Vor%

Der Code, den ich geschrieben habe, ist

%Vor%

Dies ist die key.hashCode() gleich -719988079 und mod dieses Wertes gibt -1 zurück.

Schätzen Sie Ihre Hilfe dazu. Danke.

    
Maverick 22.02.2013, 19:14
quelle

3 Antworten

21

Die von Ihrem benutzerdefinierten Partitioner berechnete Partitionsnummer darf nicht negativ sein. Probieren Sie:

%Vor%     
harpun 22.02.2013, 19:38
quelle
4

Eine Warnung zur Verwendung von:

%Vor%

Wenn Sie den Fall treffen, in dem key.hashCode() gleich Integer.MIN_VALUE ist, erhalten Sie immer noch einen negativen Partitionswert. Es ist eine Kuriosität von Java, aber Math.abs(Integer.MIN_VALUE) gibt Integer.MIN_VALUE zurück (wie in -2147483648). Sie sind sicherer, wenn Sie den Absolutwert des Moduls wie folgt verwenden:

%Vor%     
starkadder 15.07.2015 19:56
quelle
2

Oder Sie können

verwenden %Vor%     
Tanveer 22.01.2015 09:25
quelle

Tags und Links