用mapreduce统计重庆年龄大于25的人数?
testHiveMapper类
package testhive;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;
import static com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type.Text;
public class testHiveMapper extends Mapper<LongWritable,Text,Text, IntWritable> {
private Text outk =new Text();
private int value;
private IntWritable outv =new IntWritable(1);
@Override
protected void map(LongWritable key,Text value,Context context)
throws IOException,InterruptedException{
String line =value.toString();
System.out.println(line);
String[] words =line.split(",");
if(words[3].equals("chongqing")){
if(Integer.parseInt(words[2])>=25){
outk.set(words[3]);
context.write(outk,outv);
}
}
}
}
testHiveReducer类
package testhive;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;
import java.io.IOException;
public class testHiveReducer extends Reducer<Text,IntWritable,Text, IntWritable> {
private IntWritable outv =new IntWritable();
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException,InterruptedException{
int sum =0;
for(IntWritable v:values){
sum +=v.get();
}
outv.set(sum);
context.write(key,outv);
}
}
testHiveDriver类
package testhive;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.Text;
import java.io.IOException;
public class testHiveDriver {
public static void main(String[] args) throws
IOException,InterruptedException,ClassNotFoundException{
Configuration conf = new Configuration();
Job job = Job.getInstance(conf);
job.setJarByClass(testHiveDriver.class);
job.setMapperClass(testHiveMapper.class);
job.setReducerClass(testHiveReducer.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.setInputPaths(job, new Path("\\hadoop1\\user_hive.txt"));
FileOutputFormat.setOutputPath(job, new Path("D:\\hadoop1\\user_hive output"));
boolean b =job.waitForCompletion(true);
System.exit(b?0:1);
}
}
结果示图: