Как реализовать задание oop mapreduce как не отображать / уменьшать, даже если это не имеет никакого смысла? - PullRequest
0 голосов
/ 07 января 2020

Даже если для меня нет никакого смысла в реализации «Если бы» oop Работа выполнялась не по схеме / сокращению, мне нужно реализовать ее для моего проекта в университете

Каким образом oop Работа может быть запущен как не карта / уменьшить? Достаточно ли просто установить редукторы на 0?

job.setNumreduceTasks(0) 

или есть другой способ?

Мое приложение отлично работает с классом картографа и редуктора, проблема подсчета решена (аналогично подсчету мира, но биологическим способом).

Ответы [ 2 ]

0 голосов
/ 11 января 2020

Если вы не хотите использовать операции преобразования / уменьшения и хотите выполнить весь код на драйвере, вы должны реализовать интерфейс Инструмент без создания каких-либо заданий:

public class MyApp extends Configured implements Tool {

   public int run(String[] args) throws Exception {
     // your code
   }
}

Но если вы хотите использовать только мапперы, которые вы можете просто установить job.setNumReduceTasks(0);

0 голосов
/ 07 января 2020

Тот факт, что вы создали класс Job, который требует, чтобы вы установили классы мапперов и редукторов, по определению заставляет вас выполнять mapreduce.

Если вы должны использовать Had oop, и если вы не хотите выполнять множественное отображение или уменьшение операции (например, не распараллеливать операцию), вам не нужно разбивать файл через InputFormat (который по умолчанию читает строку за строкой файла).

Если вы сделаете так, чтобы маппер считывал только одно разбиение, он обработает весь файл. Вы можете проанализировать весь файл в задаче mapper, вы можете передать его напрямую в редуктор и сделать это там.

По сути, вы просто вызываете повторную сериализацию данных в этот момент

...