2013-02-21 3 views
0

Я использую KeyValueTextInputFormat для чтения/обработки разделенных запятой файла:KeyValueTextInputFormat запятая

100,56
89.586
123,68

Однако я получаю все значения в ключе , поле значения приходит как null, даже после предоставления разделителя как запятой (,). Он не выбирает разделитель, не уверен, что вопрос ,, вот мой код драйвера:

Configuration conf = new Configuration(); 
    conf.set("key.value.separator.in.input.line", ","); 
    Job job = new Job(conf, "citation data"); 
    job.setJarByClass(Citation.class); 
    job.setJobName("citation data"); 
    job.setMapperClass(MapClass.class); 
    job.setReducerClass(ReduceClass.class); 
    job.setInputFormatClass(KeyValueTextInputFormat.class); 

    job.setOutputKeyClass(Text.class); 
    job.setOutputValueClass(Text.class); 
    KeyValueTextInputFormat.addInputPath(job, new Path("input/sample.txt")); 
    FileOutputFormat.setOutputPath(job, new Path("output2")); 

    System.exit(job.waitForCompletion(true)?0:1); 
+1

возможно дубликат [Как указать KeyValueTextInputFormat Сепаратор в Hadoop-+0,20 апи?] (Http://stackoverflow.com/questions/9211151/how-to-define-keyvaluetextinputformat-separator-in-hadoop-20-api) –

+0

@ChrisGerken - Не дублируясь как таковой, здесь проблема заключается в том, что поле значения идет как null – CassandraCurious

ответ

0

Он отлично работает для меня. В одном из моего mapred кода, я просто изменил следующее, и она работала:

  1. Изменен InputFormatClass использовать KeyValueTextInputFormat
  2. Добавлен конфиг - conf.set("key.value.separator.in.input.line", ",");
  3. удостоверился, чем в картографе имеет вид чего-то как Mapper<Text,Text,K,V>, который сделал бы подпись методы карты(), чтобы быть что-то вроде этого:

общественной недействительная карты (текста ключ, Текст значение, выход OutputCollector, репортер репортер) бросает IOException {}

Никаких других изменений не требуется, и вы должны получить данные первого столбца в качестве ключа и второго столбца, значение.

Я думаю, единственное, что вы, возможно, пропустили это точка 3.

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