packagerecruit.mapreduce;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.NullWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Mapper;importjava.io.IOException;publicclassRecruitMapextendsMapper<LongWritable,Text,Text,NullWritable>{@Overrideprotectedvoidmap(LongWritable key,Text value,Context context)throwsIOException,InterruptedException{/********** Begin **********/String[] fields = value.toString().split("\t");boolean flag =true;if(fields.length ==9){int i =0;for(String field : fields){if("".equals(field)|| field.trim()==null){
flag =false;break;}}if(flag){if(fields[2].contains("k")){
fields[2]= fields[2].replace("k","");}elseif(fields[2].contains("K")){
fields[2]= fields[2].replace("K","");}String re ="[0-9]+-[0-9]+";
flag = fields[2].matches(re);}if(flag){
fields[0]= fields[0].toLowerCase();
fields[8]= fields[8].toLowerCase();
fields[8]= fields[8].replaceAll("·","|");
fields[1]= fields[1].trim().split("·")[0].trim();String maxsalary = fields[2].split("-")[0].trim();String minsalary = fields[2].split("-")[1].trim();Double avgsalary =(Double.parseDouble(maxsalary)+Double.parseDouble(minsalary))/2;
fields[2]=String.format("%.2f", avgsalary);String result ="";int len =0;for(String field : fields){
len = len +1;if(len == fields.length){
result = result + field;}else{
result = result + field +"\t";}}
context.write(newText(result),NullWritable.get());}}/********** End **********/}}
packagerecruit.mapreduce;importorg.apache.hadoop.io.NullWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Reducer;importjava.io.IOException;publicclassRecruitReduceextendsReducer<Text,NullWritable,NullWritable,Text>{@Overrideprotectedvoidreduce(Text key,Iterable<NullWritable> values,Context context)throwsIOException,InterruptedException{/********** Begin **********/
context.write(NullWritable.get(),newText(key));/********** End **********/}}