不推荐使用MapReduceBase和Mapper
public static class Map extends MapReduceBase implements Mapper
在Hadoop 0.20.203中不推荐使用MapReduceBase
, Mapper
和JobConf
。
我们现在应该用什么?
编辑1 – 对于Mapper
和MapReduceBase
,我发现我们只需要扩展Mapper
public static class Map extends Mapper { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, OutputCollector output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } }
编辑2 – 对于JobConf
我们应该使用如下配置:
public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = new Job(conf); job.setMapperClass(WordCount.Map.class); }
编辑3 – 我根据新的API找到了一个很好的教程: http : //sonerbalkir.blogspot.com/2010/01/new-hadoop-api-020x.html
Javadoc包含有关使用这个已删除类的instaed的信息:
例如http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/JobConf.html
Deprecated. Use Configuration instead
编辑:当您使用maven和开放类声明(F3)时,maven可以自动下载源代码,您将看到带有解释的javadoc注释的内容。
旧API和新API之间没有太多不同的function ,除了旧API支持推送到map / reduce函数,而新API支持推送和拉取API 。 虽然,新的API更清洁,更容易发展。
以下是引入新API的JIRA 。 此外,旧API已在0.21中弃用 ,并将在0.22或0.23版本中弃用。
您可以在此处和此处找到有关新API或有时称为“上下文对象”的更多信息。