Hadoop Reducer: Wie kann ich spekulativ in mehrere Verzeichnisse ausgeben?

Ich habe einen Reduzierer, der Ergebnisse in verschiedenen Verzeichnissen ausgeben muss, damit wir die Ausgabe später als Eingabe für Hive als partitionierte Tabelle verwenden können. (Hive erstellt Partitionen basierend auf dem Ordnernamen). Um an diese Standorte zu schreiben, verwenden wir derzeit kein Hadoop-Framework, um dies zu erreichen. Wir schreiben nur sozusagen "hinter Hadoops Rücken" an separate Standorte. Mit anderen Worten, wir verwenden nicht die Hadoop-API, um diese Dateien auszugeben.

Wir hatten Probleme mitmapred.reduce.tasks.speculative.execution einstellentrue. Ich verstehe, dass dies der Fall ist, da mehrere Aufgabenversuche für dieselbe Aufgabe an dieselbe Position geschrieben werden.

Gibt es eine Möglichkeit, die Hadoop-API korrekt zu verwenden, um vom selben Reduzierer in mehrere verschiedene Ordner auszugeben, so dass ich sie auch verwenden kann?mapred.reduce.tasks.speculative.execution=true ? (Ich kenne MultipleOutputs, die keine spekulative Ausführung unterstützen.)

Wenn ja, gibt es einen Weg, dies zu tunund Ausgabe an S3?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage