Ich benutze Hadoops Map reduce, um XML-Dateien zu analysieren. Also habe ich eine Klasse namens Parser
, die eine Methode parse()
haben kann, um die XML-Dateien zu analysieren. Und so sollte ich es in der Mapper's map()
Funktion verwenden.Hadoop verwendet eine Instanz für jeden Mapper
Allerdings bedeutet es, dass jedes Mal, wenn ich eine Parser
aufrufen möchte, ich eine Parser
Instanz erstellen muss. Diese Instanz sollte jedoch für jeden Kartenjob identisch sein. Ich frage mich, ob ich diese Parser
nur einmal instanziieren kann?
Und nur eine weitere Zusatzfrage, warum die Klasse immer statisch ist?
In einer verteilten Computerumgebung, Instanzen einer Variablen zu teilen ist nicht möglich ... auch nicht sicher, ob der Mapper immer statisch ist. Wo siehst du das? –
Scratch diese zweite Aussage ... Ich habe MapReduce nicht vor kurzem geschrieben, aber hier ist die Erklärung http://StackOverflow.com/Questions/11570674/Why-Declaring-Mapper-and-Reducer-Classes-as-static –
In diesem Beispielcode, der Mapper ist eine statische Klasse. [link] (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) –