MapReduce编程遇到的一些问题

实现电话号码前三位的统计

实现流程

在这里插入图片描述

第一次调试:

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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

honconM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值