Как вызвать Partitioner в Haoop v 0.21 - PullRequest
1 голос
/ 17 мая 2011

В моем приложении я хочу создать как можно больше заданий редуктора на основе ключей. Теперь моя текущая реализация записывает все ключи и значения в один (редукторный) выходной файл. Поэтому, чтобы решить эту проблему, я использовал один разделитель, но я не могу вызвать класс. Разделитель должен вызываться после задачи выбора карты и до задачи сокращения выбора, но этого не произошло. Код разделителя следующий

public class MultiWayJoinPartitioner extends Partitioner<Text, Text> {
@Override
public int getPartition(Text key, Text value, int nbPartitions) {
return (key.getFirst().hashCode() & Integer.MAX_VALUE) % nbPartitions;
return 0;
}
}

Является ли этот код правильным для разделения файлов на основе ключей и значений, и вывод будет автоматически передан в редуктор ??

1 Ответ

0 голосов
/ 03 сентября 2012

Вы не показываете весь свой код, но обычно есть класс (называемый классом «Job» или «MR»), который настраивает преобразователь, редуктор, разделитель и т. Д., А затем фактически передает задание в hadoop , В этом классе у вас будет объект конфигурации задания, который имеет много свойств, одним из которых является число редукторов. Установите для этого свойства любое число, которое может обработать ваша конфигурация hadoop.

Как только задание настроено с заданным числом редукторов, это число будет передано в ваш раздел (кстати, это выглядит правильно). Ваш разделитель начнет возвращать соответствующий редуктор / раздел для пары ключ / значение. Вот так вы получаете столько редукторов, сколько возможно.

...