2014-10-06 3 views
0

Я пытаюсь написать более одного значения в результатах задания. Для этого я использую пользовательскую запись, которая реализует интерфейс Writable. Этот пользовательский доступный для записи, я назвал его, CompositeWritable реализует два метода чтения и записи. Когда я запускаю работу, вывод выглядит следующим образом:Hadoop пользовательский доступный для записи

key [email protected] 
lean [email protected] 
likely [email protected] 

Что мне не хватает? В спецификации задания я задал класс выходных значений CompositeWritable. В каких-то других настройках я пропустил?

+0

Когда вы говорите «выход», вы смотрите на выходной файл? Какой выходной формат вы используете? Кажется, это результат унаследованной «toString» из java.lang.Object. –

+0

да, выходной файл. Не указывая формат вывода, я думаю, что это TextOutputFormat. – user3111525

+0

Пробовал явно задавать 'job.setOutputFormatClass (TextOutputFormat.class)', но тот же результат. – user3111525

ответ

1

TextOutputFormat, похоже, полагается на метод toString из записываемого файла (see line 80). Внедрите разумное переопределение toString в свой класс CompositeWritable, например, вы можете вызвать строку на содержащиеся элементы и добавить их вместе с разделителем.

1

Вы отсутствуют

@Override 
    public String toString() { 
     return ___________; 
    } 

Пример:

@Override 
     public String toString() { 
      return key+","+value; 
     } 

Здесь ключ и значение отделено с помощью "" seperator.You может использовать любой Seperator по вашему желанию.

Смежные вопросы