Gibt es eine Möglichkeit, ein benutzerdefiniertes Konfigurationsobjekt in Hadoop während Map/Reduce festzulegen und (später) zu erhalten?Ausgeben von benutzerdefinierten Konfigurationswerten in Hadoop
Nehmen Sie zum Beispiel eine Anwendung an, die eine große Datei vorverarbeitet und dynamisch bestimmte Eigenschaften der Datei ermittelt. Weiterhin wird angenommen, dass diese Eigenschaften in einem kundenspezifischen Java-Objekt (z. B. einem Properties
-Objekt, aber nicht ausschließlich, da einige keine Zeichenfolgen sind) gespeichert werden und anschließend für jede der Karten und der Reduzierungsaufträge notwendig sind.
Wie kann die Anwendung diese Konfiguration "propagieren", so dass jede Mapper- und Reducer-Funktion bei Bedarf darauf zugreifen kann?
Ein Ansatz könnte die set(String, String)
Methode der JobConf
Klasse und zum Beispiel zu verwenden sein, das Konfigurationsobjekt wie ein über den zweiten Parameter JSON
String serialisiert, aber dies kann zu viel sein wie ein Hack und dann die entsprechenden JobConf
Auf die Instanz muss auf jeden Fall zugegriffen werden (und Reducer
) (z. B. nach einem Ansatz wie dem in einer earlier question vorgeschlagenen).
Dies ist in Ordnung, wenn alle Eigenschaften Strings sind. In meinem Anwendungsfall sind es einige nicht, sie sind (ziemlich komplexe) benutzerdefinierte Java-Objekte, die sowohl für die Karte als auch für die reduzierten Teile benötigt werden. Aber +1 für die Antwort sowieso. :-) – PNS
@PNS Nun, wenn Sie Nicht-String-Objekt übergeben möchten, könnten Sie immer Ihre Objekte serialisieren, bevor Sie die zu Strings konvertieren und diese Strings an die 'Konfiguration' übergeben, und dann im Mapper/Reducer de-serialisieren Objekte. Ich glaube nicht, dass es einen nativen Weg gibt, Objekte auf diese Art zu übergeben.Sie könnten das Objekt wahrscheinlich auch in eine Datei serialisieren und in HDFS ablegen und dann diese Datei wahrscheinlich mit dem 'DistributedCache' erhalten. –
Ja, Serialisierung scheint trotzdem notwendig zu sein, da MapReduce eine verteilte Anwendung ist. – PNS