实现电话号码前三位的统计
实现流程
第一次调试:
PhoneDriver.java配置Partitioner类(分区)时,没有设置ReduceTask的数量,导致程序默认一个分区。
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import java.io.IOException;
public class PhoneDriver {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
Configuration configuration=new Configuration();
Job job=Job.getInstance(configuration);
// 配置启动类
job.setJarByClass(PhoneDriver.class);
// 配置Mapper类
job.setMapperClass(PhoneMapper.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
// 配置Partitioner类(分区)
job.setPartitionerClass(PhonePartitioner.class);
// 配置区内聚合
job.setCombinerClass(PhoneCombiner.class);
// 配置Reducer类
job.setReducerClass(PhoneReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(LongWritable.class);
FileInputFormat.setInputPaths(job,new Path("G:\\kgc\\KB15\\code\\hadoopstu\\in\\demo2"));
Path outpath=new Path("G:\\kgc\\KB15\\code\\hadoopstu\\out2");
FileSystem fs=FileSystem.get(outpath.toUri(),configuration);
if(fs.exists(outpath)){
fs.delete(outpath,true);
}
FileOutputFormat.setOutputPath(job,outpath);
job.waitForCompletion(true);
}
}
运行结果:
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
PhoneMapper key:0 value:13524895568,zhangsan1
PhoneMapper key:23 value:13624895569,zhangsan2
PhoneMapper key:46 value:13724895570,zhangsan3
PhoneMapper key:69 value:13824895571,zhangsan4
PhoneMapper key:92 value:13924895572,zhangsan5
PhoneMapper key:115 value:13024895573,zhangsan6
PhoneMapper key:138 value:13124895574,zhangsan7
PhoneMapper key:161 value:13224895575,zhangsan8
PhoneMapper key:184 value:13324895576,zhangsan9
PhoneMapper key:207 value:13424895577,zhangsan10
PhoneMapper key:231 value:13524895578,zhangsan11
PhoneMapper key:255 value:13624895579,zhangsan12
PhoneMapper key:279 value:13724895580,zhangsan13
PhoneMapper key:303 value:13824895581,zhangsan14
PhoneMapper key:327 value:13924895582,zhangsan15
PhoneMapper key:351 value:13024895583,zhangsan16
PhoneMapper key:375 value:13124895584,zhangsan17
PhoneMapper key:399 value:13224895585,zhangsan18
PhoneMapper key:423 value:13324895586,zhangsan19
PhoneMapper key:447 value:13424895587,zhangsan20
PhoneMapper key:471 value:13524895588,zhangsan21
PhoneMapper key:495 value:13624895589,zhangsan22
PhoneMapper key:519 value:13724895590,zhangsan23
PhoneMapper key:543 value:13824895591,zhangsan24
PhoneMapper key:567 value:13924895592,zhangsan25
PhoneMapper key:591 value:13024895593,zhangsan26
PhoneMapper key:615 value:13124895594,zhangsan27
PhoneMapper key:639 value:13224895595,zhangsan28
PhoneMapper key:663 value:13324895596,zhangsan29
PhoneMapper key:687 value:13424895597,zhangsan30
PhoneMapper key:711 value:13524895598,zhangsan31
PhoneMapper key:735 value:13624895599,zhangsan32
PhoneMapper key:759 value:13724895600,zhangsan33
PhoneMapper key:783 value:13824895601,zhangsan34
PhoneMapper key:807 value:13924895602,zhangsan35
PhoneMapper key:831 value:13024895603,zhangsan36
PhoneMapper key:855 value:13124895604,zhangsan37
PhoneMapper key:879 value:13224895605,zhangsan38
PhoneMapper key:903 value:13324895606,zhangsan39
PhoneMapper key:927 value:13424895607,zhangsan40
PhoneMapper key:951 value:13524895608,zhangsan41
PhoneMapper key:975 value:13624895609,zhangsan42
PhoneMapper key:999 value:13724895610,zhangsan43
PhoneMapper key:1023 value:13824895611,zhangsan44
PhoneMapper key:1047 value:13924895612,zhangsan45
PhoneMapper key:1071 value:13024895613,zhangsan46
PhoneMapper key:1095 value:13124895614,zhangsan47
PhoneMapper key:1119 value:13224895615,zhangsan48
PhoneMapper key:1143 value:13324895616,zhangsan49
PhoneMapper key:1167 value:13424895617,zhangsan50
PhoneMapper key:1191 value:13524895618,zhangsan51
进入到 PhoneCombiner,Key:130 value:5
进入到 PhoneCombiner,Key:131 value:5
进入到 PhoneCombiner,Key:132 value:5
进入到 PhoneCombiner,Key:133 value:5
进入到 PhoneCombiner,Key:134 value:5
进入到 PhoneCombiner,Key:135 value:6
进入到 PhoneCombiner,Key:136 value:5
进入到 PhoneCombiner,Key:137 value:5
进入到 PhoneCombiner,Key:138 value:5
进入到 PhoneCombiner,Key:139 value:5
进入到 PhoneReducer,Key:130 value:5
进入到 PhoneReducer,Key:131 value:5
进入到 PhoneReducer,Key:132 value:5
进入到 PhoneReducer,Key:133 value:5
进入到 PhoneReducer,Key:134 value:5
进入到 PhoneReducer,Key:135 value:6
进入到 PhoneReducer,Key:136 value:5
进入到 PhoneReducer,Key:137 value:5
进入到 PhoneReducer,Key:138 value:5
进入到 PhoneReducer,Key:139 value:5
Process finished with exit code 0
第二次调试:
PhoneCombiner.java的输出v没有与map阶段设置的输出v类型相同,导致程序运行了一次PhoneCombiner的reduce方法就结束了程序。
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;
public class PhoneCombiner extends Reducer<Text, IntWritable, Text, LongWritable> {
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
System.out.print("进入到 PhoneCombiner,Key:"+key);
int count=0;
for (IntWritable intWritable:
values) {
count+=intWritable.get();
}
System.out.println(" value:"+count);
context.write(key,new LongWritable(count));
}
}
运行结果:
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
PhoneMapper key:0 value:13524895568,zhangsan1
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
PhoneMapper key:23 value:13624895569,zhangsan2
执行PhoneMapper后,进入到PhonePartitioner,Key值:136
PhoneMapper key:46 value:13724895570,zhangsan3
执行PhoneMapper后,进入到PhonePartitioner,Key值:137
PhoneMapper key:69 value:13824895571,zhangsan4
执行PhoneMapper后,进入到PhonePartitioner,Key值:138
PhoneMapper key:92 value:13924895572,zhangsan5
执行PhoneMapper后,进入到PhonePartitioner,Key值:139
PhoneMapper key:115 value:13024895573,zhangsan6
执行PhoneMapper后,进入到PhonePartitioner,Key值:130
PhoneMapper key:138 value:13124895574,zhangsan7
执行PhoneMapper后,进入到PhonePartitioner,Key值:131
PhoneMapper key:161 value:13224895575,zhangsan8
执行PhoneMapper后,进入到PhonePartitioner,Key值:132
PhoneMapper key:184 value:13324895576,zhangsan9
执行PhoneMapper后,进入到PhonePartitioner,Key值:133
PhoneMapper key:207 value:13424895577,zhangsan10
执行PhoneMapper后,进入到PhonePartitioner,Key值:134
PhoneMapper key:231 value:13524895578,zhangsan11
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
PhoneMapper key:255 value:13624895579,zhangsan12
执行PhoneMapper后,进入到PhonePartitioner,Key值:136
PhoneMapper key:279 value:13724895580,zhangsan13
执行PhoneMapper后,进入到PhonePartitioner,Key值:137
PhoneMapper key:303 value:13824895581,zhangsan14
执行PhoneMapper后,进入到PhonePartitioner,Key值:138
PhoneMapper key:327 value:13924895582,zhangsan15
执行PhoneMapper后,进入到PhonePartitioner,Key值:139
PhoneMapper key:351 value:13024895583,zhangsan16
执行PhoneMapper后,进入到PhonePartitioner,Key值:130
PhoneMapper key:375 value:13124895584,zhangsan17
执行PhoneMapper后,进入到PhonePartitioner,Key值:131
PhoneMapper key:399 value:13224895585,zhangsan18
执行PhoneMapper后,进入到PhonePartitioner,Key值:132
PhoneMapper key:423 value:13324895586,zhangsan19
执行PhoneMapper后,进入到PhonePartitioner,Key值:133
PhoneMapper key:447 value:13424895587,zhangsan20
执行PhoneMapper后,进入到PhonePartitioner,Key值:134
PhoneMapper key:471 value:13524895588,zhangsan21
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
PhoneMapper key:495 value:13624895589,zhangsan22
执行PhoneMapper后,进入到PhonePartitioner,Key值:136
PhoneMapper key:519 value:13724895590,zhangsan23
执行PhoneMapper后,进入到PhonePartitioner,Key值:137
PhoneMapper key:543 value:13824895591,zhangsan24
执行PhoneMapper后,进入到PhonePartitioner,Key值:138
PhoneMapper key:567 value:13924895592,zhangsan25
执行PhoneMapper后,进入到PhonePartitioner,Key值:139
PhoneMapper key:591 value:13024895593,zhangsan26
执行PhoneMapper后,进入到PhonePartitioner,Key值:130
PhoneMapper key:615 value:13124895594,zhangsan27
执行PhoneMapper后,进入到PhonePartitioner,Key值:131
PhoneMapper key:639 value:13224895595,zhangsan28
执行PhoneMapper后,进入到PhonePartitioner,Key值:132
PhoneMapper key:663 value:13324895596,zhangsan29
执行PhoneMapper后,进入到PhonePartitioner,Key值:133
PhoneMapper key:687 value:13424895597,zhangsan30
执行PhoneMapper后,进入到PhonePartitioner,Key值:134
PhoneMapper key:711 value:13524895598,zhangsan31
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
PhoneMapper key:735 value:13624895599,zhangsan32
执行PhoneMapper后,进入到PhonePartitioner,Key值:136
PhoneMapper key:759 value:13724895600,zhangsan33
执行PhoneMapper后,进入到PhonePartitioner,Key值:137
PhoneMapper key:783 value:13824895601,zhangsan34
执行PhoneMapper后,进入到PhonePartitioner,Key值:138
PhoneMapper key:807 value:13924895602,zhangsan35
执行PhoneMapper后,进入到PhonePartitioner,Key值:139
PhoneMapper key:831 value:13024895603,zhangsan36
执行PhoneMapper后,进入到PhonePartitioner,Key值:130
PhoneMapper key:855 value:13124895604,zhangsan37
执行PhoneMapper后,进入到PhonePartitioner,Key值:131
PhoneMapper key:879 value:13224895605,zhangsan38
执行PhoneMapper后,进入到PhonePartitioner,Key值:132
PhoneMapper key:903 value:13324895606,zhangsan39
执行PhoneMapper后,进入到PhonePartitioner,Key值:133
PhoneMapper key:927 value:13424895607,zhangsan40
执行PhoneMapper后,进入到PhonePartitioner,Key值:134
PhoneMapper key:951 value:13524895608,zhangsan41
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
PhoneMapper key:975 value:13624895609,zhangsan42
执行PhoneMapper后,进入到PhonePartitioner,Key值:136
PhoneMapper key:999 value:13724895610,zhangsan43
执行PhoneMapper后,进入到PhonePartitioner,Key值:137
PhoneMapper key:1023 value:13824895611,zhangsan44
执行PhoneMapper后,进入到PhonePartitioner,Key值:138
PhoneMapper key:1047 value:13924895612,zhangsan45
执行PhoneMapper后,进入到PhonePartitioner,Key值:139
PhoneMapper key:1071 value:13024895613,zhangsan46
执行PhoneMapper后,进入到PhonePartitioner,Key值:130
PhoneMapper key:1095 value:13124895614,zhangsan47
执行PhoneMapper后,进入到PhonePartitioner,Key值:131
PhoneMapper key:1119 value:13224895615,zhangsan48
执行PhoneMapper后,进入到PhonePartitioner,Key值:132
PhoneMapper key:1143 value:13324895616,zhangsan49
执行PhoneMapper后,进入到PhonePartitioner,Key值:133
PhoneMapper key:1167 value:13424895617,zhangsan50
执行PhoneMapper后,进入到PhonePartitioner,Key值:134
PhoneMapper key:1191 value:13524895618,zhangsan51
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
进入到 PhoneCombiner,Key:130 value:5
进入到 PhoneCombiner,Key:130 value:5
Process finished with exit code 0
附正确代码
PhoneMapper.java
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;
public class PhoneMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
Text text=new Text();
IntWritable intWritable=new IntWritable();
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
System.out.println("PhoneMapper key:"+key.get()+" value:"+value.toString());
String phone = value.toString().split(",")[0].substring(0,3);
text.set(phone);
intWritable.set(1);
context.write(text,intWritable);
}
}
PhonePartitioner.java
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;
public class PhonePartitioner extends Partitioner<Text, IntWritable> {
@Override
public int getPartition(Text text, IntWritable intWritable, int i) {
System.out.println("执行PhoneMapper后,进入到PhonePartitioner,Key值:"+text);
int pnum=0;
switch (text.toString()){
case "131":
pnum=1;
break;
case "132":
pnum=2;
break;
case "133":
pnum=3;
break;
case "134":
pnum=4;
break;
case "135":
pnum=5;
break;
case "136":
pnum=6;
break;
case "137":
pnum=7;
break;
case "138":
pnum=8;
break;
case "139":
pnum=9;
break;
default:
break;
}
return pnum;
}
}
PhoneCombiner.java
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;
public class PhoneCombiner extends Reducer<Text, IntWritable, Text, IntWritable> {
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
System.out.print("进入到 PhoneCombiner,Key:"+key);
int count=0;
for (IntWritable intWritable:
values) {
count+=intWritable.get();
}
System.out.println(" value:"+count);
context.write(key,new IntWritable(count));
}
}
PhoneReducer.java
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;
public class PhoneReducer extends Reducer<Text, IntWritable, Text, LongWritable> {
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
System.out.print("进入到 PhoneReducer,Key:"+key);
int count=0;
for (IntWritable intWritable:
values) {
count+=intWritable.get();
}
System.out.println(" value:"+count);
context.write(key,new LongWritable(count));
}
}
PhoneDriver.java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import java.io.IOException;
public class PhoneDriver {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
Configuration configuration=new Configuration();
Job job=Job.getInstance(configuration);
// 配置启动类
job.setJarByClass(PhoneDriver.class);
// 配置Mapper类
job.setMapperClass(PhoneMapper.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
// 配置Partitioner类(分区)
job.setPartitionerClass(PhonePartitioner.class);
job.setNumReduceTasks(10);
// 配置区内聚合
job.setCombinerClass(PhoneCombiner.class);
// 配置Reducer类
job.setReducerClass(PhoneReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(LongWritable.class);
FileInputFormat.setInputPaths(job,new Path("G:\\kgc\\KB15\\code\\hadoopstu\\in\\demo2"));
Path outpath=new Path("G:\\kgc\\KB15\\code\\hadoopstu\\out2");
FileSystem fs=FileSystem.get(outpath.toUri(),configuration);
if(fs.exists(outpath)){
fs.delete(outpath,true);
}
FileOutputFormat.setOutputPath(job,outpath);
job.waitForCompletion(true);
}
}
运行结果:
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
PhoneMapper key:0 value:13524895568,zhangsan1
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
PhoneMapper key:23 value:13624895569,zhangsan2
执行PhoneMapper后,进入到PhonePartitioner,Key值:136
PhoneMapper key:46 value:13724895570,zhangsan3
执行PhoneMapper后,进入到PhonePartitioner,Key值:137
PhoneMapper key:69 value:13824895571,zhangsan4
执行PhoneMapper后,进入到PhonePartitioner,Key值:138
PhoneMapper key:92 value:13924895572,zhangsan5
执行PhoneMapper后,进入到PhonePartitioner,Key值:139
PhoneMapper key:115 value:13024895573,zhangsan6
执行PhoneMapper后,进入到PhonePartitioner,Key值:130
PhoneMapper key:138 value:13124895574,zhangsan7
执行PhoneMapper后,进入到PhonePartitioner,Key值:131
PhoneMapper key:161 value:13224895575,zhangsan8
执行PhoneMapper后,进入到PhonePartitioner,Key值:132
PhoneMapper key:184 value:13324895576,zhangsan9
执行PhoneMapper后,进入到PhonePartitioner,Key值:133
PhoneMapper key:207 value:13424895577,zhangsan10
执行PhoneMapper后,进入到PhonePartitioner,Key值:134
PhoneMapper key:231 value:13524895578,zhangsan11
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
PhoneMapper key:255 value:13624895579,zhangsan12
执行PhoneMapper后,进入到PhonePartitioner,Key值:136
PhoneMapper key:279 value:13724895580,zhangsan13
执行PhoneMapper后,进入到PhonePartitioner,Key值:137
PhoneMapper key:303 value:13824895581,zhangsan14
执行PhoneMapper后,进入到PhonePartitioner,Key值:138
PhoneMapper key:327 value:13924895582,zhangsan15
执行PhoneMapper后,进入到PhonePartitioner,Key值:139
PhoneMapper key:351 value:13024895583,zhangsan16
执行PhoneMapper后,进入到PhonePartitioner,Key值:130
PhoneMapper key:375 value:13124895584,zhangsan17
执行PhoneMapper后,进入到PhonePartitioner,Key值:131
PhoneMapper key:399 value:13224895585,zhangsan18
执行PhoneMapper后,进入到PhonePartitioner,Key值:132
PhoneMapper key:423 value:13324895586,zhangsan19
执行PhoneMapper后,进入到PhonePartitioner,Key值:133
PhoneMapper key:447 value:13424895587,zhangsan20
执行PhoneMapper后,进入到PhonePartitioner,Key值:134
PhoneMapper key:471 value:13524895588,zhangsan21
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
PhoneMapper key:495 value:13624895589,zhangsan22
执行PhoneMapper后,进入到PhonePartitioner,Key值:136
PhoneMapper key:519 value:13724895590,zhangsan23
执行PhoneMapper后,进入到PhonePartitioner,Key值:137
PhoneMapper key:543 value:13824895591,zhangsan24
执行PhoneMapper后,进入到PhonePartitioner,Key值:138
PhoneMapper key:567 value:13924895592,zhangsan25
执行PhoneMapper后,进入到PhonePartitioner,Key值:139
PhoneMapper key:591 value:13024895593,zhangsan26
执行PhoneMapper后,进入到PhonePartitioner,Key值:130
PhoneMapper key:615 value:13124895594,zhangsan27
执行PhoneMapper后,进入到PhonePartitioner,Key值:131
PhoneMapper key:639 value:13224895595,zhangsan28
执行PhoneMapper后,进入到PhonePartitioner,Key值:132
PhoneMapper key:663 value:13324895596,zhangsan29
执行PhoneMapper后,进入到PhonePartitioner,Key值:133
PhoneMapper key:687 value:13424895597,zhangsan30
执行PhoneMapper后,进入到PhonePartitioner,Key值:134
PhoneMapper key:711 value:13524895598,zhangsan31
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
PhoneMapper key:735 value:13624895599,zhangsan32
执行PhoneMapper后,进入到PhonePartitioner,Key值:136
PhoneMapper key:759 value:13724895600,zhangsan33
执行PhoneMapper后,进入到PhonePartitioner,Key值:137
PhoneMapper key:783 value:13824895601,zhangsan34
执行PhoneMapper后,进入到PhonePartitioner,Key值:138
PhoneMapper key:807 value:13924895602,zhangsan35
执行PhoneMapper后,进入到PhonePartitioner,Key值:139
PhoneMapper key:831 value:13024895603,zhangsan36
执行PhoneMapper后,进入到PhonePartitioner,Key值:130
PhoneMapper key:855 value:13124895604,zhangsan37
执行PhoneMapper后,进入到PhonePartitioner,Key值:131
PhoneMapper key:879 value:13224895605,zhangsan38
执行PhoneMapper后,进入到PhonePartitioner,Key值:132
PhoneMapper key:903 value:13324895606,zhangsan39
执行PhoneMapper后,进入到PhonePartitioner,Key值:133
PhoneMapper key:927 value:13424895607,zhangsan40
执行PhoneMapper后,进入到PhonePartitioner,Key值:134
PhoneMapper key:951 value:13524895608,zhangsan41
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
PhoneMapper key:975 value:13624895609,zhangsan42
执行PhoneMapper后,进入到PhonePartitioner,Key值:136
PhoneMapper key:999 value:13724895610,zhangsan43
执行PhoneMapper后,进入到PhonePartitioner,Key值:137
PhoneMapper key:1023 value:13824895611,zhangsan44
执行PhoneMapper后,进入到PhonePartitioner,Key值:138
PhoneMapper key:1047 value:13924895612,zhangsan45
执行PhoneMapper后,进入到PhonePartitioner,Key值:139
PhoneMapper key:1071 value:13024895613,zhangsan46
执行PhoneMapper后,进入到PhonePartitioner,Key值:130
PhoneMapper key:1095 value:13124895614,zhangsan47
执行PhoneMapper后,进入到PhonePartitioner,Key值:131
PhoneMapper key:1119 value:13224895615,zhangsan48
执行PhoneMapper后,进入到PhonePartitioner,Key值:132
PhoneMapper key:1143 value:13324895616,zhangsan49
执行PhoneMapper后,进入到PhonePartitioner,Key值:133
PhoneMapper key:1167 value:13424895617,zhangsan50
执行PhoneMapper后,进入到PhonePartitioner,Key值:134
PhoneMapper key:1191 value:13524895618,zhangsan51
执行PhoneMapper后,进入到PhonePartitioner,Key值:135
进入到 PhoneCombiner,Key:130 value:5
进入到 PhoneCombiner,Key:131 value:5
进入到 PhoneCombiner,Key:132 value:5
进入到 PhoneCombiner,Key:133 value:5
进入到 PhoneCombiner,Key:134 value:5
进入到 PhoneCombiner,Key:135 value:6
进入到 PhoneCombiner,Key:136 value:5
进入到 PhoneCombiner,Key:137 value:5
进入到 PhoneCombiner,Key:138 value:5
进入到 PhoneCombiner,Key:139 value:5
进入到 PhoneReducer,Key:130 value:5
进入到 PhoneReducer,Key:131 value:5
进入到 PhoneReducer,Key:132 value:5
进入到 PhoneReducer,Key:133 value:5
进入到 PhoneReducer,Key:134 value:5
进入到 PhoneReducer,Key:135 value:6
进入到 PhoneReducer,Key:136 value:5
进入到 PhoneReducer,Key:137 value:5
进入到 PhoneReducer,Key:138 value:5
进入到 PhoneReducer,Key:139 value:5
Process finished with exit code 0