Myślałem, że odnoszą się one do reduktora, ale w moim programie mamDo czego odnosi się job.setOutputKeyClass i job.setOutputReduceClass?
public static class MyMapper extends Mapper< LongWritable, Text, Text, Text >
i
public static class MyReducer extends Reducer< Text, Text, NullWritable, Text >
więc jeśli mam
job.setOutputKeyClass(NullWritable.class);
job.setOutputValueClass(Text.class);
otrzymuję następujący wyjątek
Type mismatch in key from map: expected org.apache.hadoop.io.NullWritable, recieved org.apache.hadoop.io.Text
ale jeśli mam
job.setOutputKeyClass(Text.class);
nie ma problemu.
Czy coś jest nie tak z moim kodem lub dzieje się tak z powodu NullWritable lub czegoś innego?
Czy muszę również używać job.setInputFormatClass
i job.setOutputFormatClass
? Ponieważ moje programy działają poprawnie bez nich.
Oh masz rację, ja nie wiedziałem o tych dwóch metod, które mentioned.Adding im mój program runs.Of Oczywiście używam pracy nie JobConf, ale metody istnieją również. Dziękuję bardzo! Czy mógłbyś powiedzieć mi coś o ostatniej części mojego pytania? – nik686
@ nik686 Dodałem odpowiedź do ostatniej części twojego pytania powyżej. –
Tak więc domyślne ustawienie to TextInputFormat i TextOutputFormat, dlatego program działa. Dziękuję bardzo! – nik686