Mam dwie oddzielne klasy Java do wykonywania dwóch różnych zadań mapreduce. Mogę je uruchomić niezależnie. Pliki wejściowe, na których działają, są takie same dla obu zadań. Więc moje pytanie brzmi: czy możliwe jest zdefiniowanie dwóch twórców map i dwa reduktory w jednej klasie java jakHadoop MapReduce: Możliwe zdefiniowanie dwóch maperów i reduktorów w jednej klasie zadań hadoop?
mapper1.class
mapper2.class
reducer1.class
reducer2.class
a następnie jak
job.setMapperClass(mapper1.class);
job.setmapperClass(mapper2.class);
job.setCombinerClass(reducer1);
job.setCombinerClass(reducer2);
job.setReducerClass(reducer1);
job.setReducerClass(reducer2);
Czy te określają metody faktycznie zastępują poprzednie lub dodać nowy te? Próbowałem kodu, ale uruchamia on tylko najnowsze, podane klasy, co powoduje, że myślę, że to zastępuje. Ale musi być sposób na robienie tego dobrze?
Powodem, dla którego o to pytam, jest to, że mogę odczytać pliki wejściowe tylko jeden raz (jedno wejście/wyjście), a następnie przetworzyć dwa zadania redukcji mapy. Chciałbym również wiedzieć, w jaki sposób mogę zapisać pliki wyjściowe w dwóch różnych folderach. W tej chwili oba zadania są oddzielne i wymagają katalogu wejściowego i wyjściowego.
+1 Ma to sens. – pyfunc
@ Chris Obie pary MR dzielą to samo wejście, co spowodowało, że pomyślałem, że mogę odczytać wejście tylko raz. Twórcy map działają z różnymi kluczami. Oznacza to, że klawisze dla jednego programu odwzorowującego będą różne od klawiszy dla innego programu odwzorowującego. Powodem, dla którego myślę, jest to, że mogę odczytać pliki wejściowe tylko raz, aby przetworzyć je w dwóch różnych parach MR, które pracują niezmiennie. – Bob