2014-11-03 5 views
0

Я пытаюсь запустить упрощенную карту, уменьшая работу набора данных TSV, и я немного смущен о том, что пойдет не так, когда я пытаюсь выполнить простую операцию с картой. Ниже приводится моя модификация класса карты sample Word Count problem.Вход TSV в Hadoop Map Уменьшить

public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 
    private Text node = new Text(); 

    public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { 
     String line = value.toString(); 
     String tokens[] = line.split('t'); 
     node.set(tokens[1]); 
     int weight = Integer.parseInt(tokens[2]); 
     output.collect(node, new Writable(weight)); 

    } 
    } 

Ввод может быть визуализирован как файл TSV с тремя столбцами. Я получаю ошибку method.java.lang.String.split being not applicable для вышеуказанного кода в строке, где линия разделяется на токены. Любые идеи, в которых я могу ошибаться?

+1

Попробуйте использовать это: 'line.split (" \ t ");' вместо 'line.split ('t')'. – Ashrith

ответ

1

Строковые жетоны [] = line.split ('t');

Изменение к

строковые лексемы [] = line.split ('\ т');

0

String tokens[] = line.split('t');

Оно должно быть:

String tokens[] = line.split("\t");

Использование одинарные кавычки для символьного типа и вызовет исключение.

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