Ho due classi java separate per eseguire due diversi lavori di ridenorazione della mappa. Posso eseguirli in modo indipendente. I file di input su cui stanno operando sono gli stessi per entrambi i lavori. Quindi la mia domanda è se sia possibile definire due mapper e due riduttori in una classe Java comeHadoop MapReduce: è possibile definire due mapper e riduttori in una classe di lavoro hasdoop?
mapper1.class
mapper2.class
reducer1.class
reducer2.class
e poi come
job.setMapperClass(mapper1.class);
job.setmapperClass(mapper2.class);
job.setCombinerClass(reducer1);
job.setCombinerClass(reducer2);
job.setReducerClass(reducer1);
job.setReducerClass(reducer2);
fare questi metodi impostati in realtà ignorare i precedenti o aggiungere il nuovo quelli? Ho provato il codice, ma esegue solo le ultime lezioni date che mi portano a pensare che abbia la precedenza. Ma ci deve essere un modo per farlo giusto?
Il motivo per cui sto chiedendo questo è che posso leggere i file di input solo una volta (un I/O) e quindi elaborare due mappe ridurre i lavori. Mi piacerebbe anche sapere come posso scrivere i file di output in due cartelle diverse. Al momento, entrambi i lavori sono separati e richiedono un input e una directory di output.
+1 Questo ha senso. – pyfunc
@Chris Entrambe le coppie di MR condividono lo stesso input, il che mi ha fatto pensare di poter leggere l'input solo una volta. I mappatori funzionano con chiavi diverse. Ciò significa che le chiavi per un mappatore saranno diverse da quelle per l'altro mappatore. Il motivo per cui sto pensando è che posso leggere i file di input solo una volta per elaborarli in due diverse coppie di MR che funzionano in modo indipendente. – Bob