mapreduce处理多文件代码(气温处理)

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class study {
    public static class myMap extends Mapper< LongWritable, Text, Text, LongWritable> {

        public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

            // 每行气象数据
            String line = value.toString();
            String [] info=line.split(",");

            FileSplit fileSplit = (FileSplit) context.getInputSplit();

            // 通过文件名称提取省份名称
            String weatherStationId = fileSplit.getPath().getName();
            String [] mm=weatherStationId.split("_");
            String provinceName=mm[0];

            context.write(new Text(provinceName), new LongWritable(Long.valueOf(info[2])));
        }
    }

    public static class myReduce extends Reducer< Text, LongWritable, Text, LongWritable> {

        public void reduce(Text key, Iterable< LongWritable> values,Context context) throws IOException, InterruptedException {

            Long sum = 0L;
            int count = 0;

            for (LongWritable val : values) {
                sum += val.get();
                count++;
            }
            long avg=sum/count;
            context.write(key,new LongWritable(avg));
        }
    }

    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        Configuration conf=new Configuration();
        Job job=Job.getInstance(conf, study.class.getSimpleName());
        job.setJarByClass(study.class);
        FileInputFormat.addInputPath(job, new Path(args[0]));
        job.setMapperClass(myMap.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(LongWritable.class);
        job.setReducerClass(myReduce.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LongWritable.class);
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        job.waitForCompletion(true);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值