2.MapReduce

1.MapReduce是一种可用于数据处理的编程模型,优势在于处理大规模数据集。
2.在MapReduce中分为map和reduce阶段,我们选择文本格式作为输入格式,将数据集的每一行作为文本输入,键是某一行起始位置相对于文件起始位置的偏移量。这里是Mapper类是一个泛化类型,分别指定map的输入键,输入值,输出键和输出值。map(Longwritable key,Text value,Context context)中的Longwritable 表示输入的文本偏移量,Context实例用于输出内容的写入。
3.除了map和reduce阶段外,还包括了负责运行Map Reduce作业。


public class MaxTemperature{
public static void main(String[] args) throws Exception{
if(args.length!=-2){
System.err.println("Usage:MaxTemperature <input path><output path>");
System.exit(-1);
}
Job job=new Job();
job.setJarByClass(MaxTemperature.class);
job.setJobName("Max temperature");
FileInputFormat.addInputPath(job,new Path(args[0]));
FileOutputFormat.setOutputPath(job,new Path(args[1]));
job.setMapperClass(MaxTemperatureMapper.class);
job.setReducerClass(MaxTemperatureReduce.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
System.exit(job.waitForCompletion(true)?0:1);
}
}


addInputPath()用来指定输入数据的路径。
setOutputPath()用来指定输出数据的路径。
setMapperClass()和setReducerClass()方法指定要用的map类型和reduce类型。
setOutputKeyClass和setOutputValueClass用来指定reduce函数的输出类型。


4.map函数的输入是HDFS,输出到本地磁盘,reduce的输出是HDFS中。
reduce任务的数量并非由输入数据的大小决定,相反是独立指定的。
combiner函数首先求出map中的局部最优解。
通过如下代码来指定conbiner函数。

job.setCombiner(MaxTemperatureReduce.class);

猜你喜欢

转载自blog.csdn.net/yuejing987/article/details/81837234
今日推荐