很多在写mapreduce,但是有的写的不太明白,并不太了解我们为什么这么写,为什么会让我们感到迷惑。这是因为它与我们传统编程有所不同,我们一个函数,有明确的数据源,明确的传入传出值,但是这里mapreduce中,我们却只看到了key,value,并却还有参数context,有点莫名其妙,并且这个函数我们只是定义了,却并没有调用。
比如 一、传统开发: 1.定义函数
public static class A
{
public string fun(String str)
{
System.out.println(str);
}
} 2.调用函数
A a=new A();
a.fun('a');
二、分布式开发: 1.自定义函数
protected void map(LongWritable key, Text value, Context context)
{
final String[] splited = value.toString().split("\t");
for (String word : splited) {
context.write(new Text(word), new LongWritable(1L));
} 2.函数调用
Configuration conf = new Configuration();
final Job job = new Job(conf, mapreduce.class.getSimpleName());