学习笔记(六)--------MR单元测试以及DeBug调试

package com.hadoop.base;

import java.io.IOException;
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 org.apache.hadoop.mrunit.mapreduce.MapDriver;
import org.junit.Before;
import org.junit.Test;
/**
 * Mapper 端的单元测试
 */
@SuppressWarnings("all")
public class TemperatureMapperTest {
    private Mapper mapper;//定义一个Mapper对象
    private MapDriver driver;//定义一个MapDriver 对象

    @Before
    public void init() {
        mapper = new Temperature.TemperatureMapper();//实例化一个Temperature中的TemperatureMapper对象
        driver = new MapDriver(mapper);//实例化MapDriver对象
    }

    @Test
    public void test() throws IOException {
        //输入一行测试数据
        String line = "1980 12 01 17   150    -5 10229   230    72     0     0 -9999";
        driver.withInput(new LongWritable(), new Text(line))//跟TemperatureMapper输入类型一致
                .withOutput(new Text("weatherStationId"), new IntWritable(150))//跟TemperatureMapper输出类型一致
                .runTest();
    }
}
package com.hadoop.base;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mrunit.mapreduce.ReduceDriver;
import org.junit.Before;
import org.junit.Test;
/**
 * Reducer 单元测试
 */
@SuppressWarnings("all")
public class TemperatureReduceTest {
    private Reducer reducer;//定义一个Reducer对象    
    private ReduceDriver driver;//定义一个ReduceDriver对象

    @Before
    public void init() {
        reducer = new Temperature.TemperatureReducer();//实例化一个Temperature中的TemperatureReducer对象
        driver = new ReduceDriver(reducer);//实例化ReduceDriver对象
    }

    @Test
    public void test() throws IOException {
        String key = "weatherStationId";//声明一个key值
        List values = new ArrayList();
        values.add(new IntWritable(200));//添加第一个value值
        values.add(new IntWritable(100));//添加第二个value值
        driver.withInput(new Text("weatherStationId"), values)//跟TemperatureReducer输入类型一致
              .withOutput(new Text("weatherStationId"), new IntWritable(150))//跟TemperatureReducer输出类型一致
              .runTest();
    }
}
package com.hadoop.base;

import java.io.IOException;
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 org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mrunit.mapreduce.MapReduceDriver;
import org.junit.Before;
import org.junit.Test;
/**
 * Mapper 和 Reducer 集成起来测试
 */
@SuppressWarnings("all")
public class TemperatureTest {
    private Mapper mapper;//定义一个Mapper对象
    private Reducer reducer;//定义一个Reducer对象    
    private MapReduceDriver driver;//定义一个MapReduceDriver 对象

    @Before
    public void init() {
        mapper = new Temperature.TemperatureMapper();//实例化一个Temperature中的TemperatureMapper对象
        reducer = new Temperature.TemperatureReducer();//实例化一个Temperature中的TemperatureReducer对象
        driver = new MapReduceDriver(mapper, reducer);//实例化MapReduceDriver对象
    }

    @Test
    public void test() throws RuntimeException, IOException {
        //输入两行行测试数据
        String line = "1985 07 31 02   200    94 10137   220    26     1     0 -9999";
        String line2 = "1985 07 31 11   100    56 -9999    50     5 -9999     0 -9999";
        driver.withInput(new LongWritable(), new Text(line))//跟TemperatureMapper输入类型一致
              .withInput(new LongWritable(), new Text(line2))
              .withOutput(new Text("weatherStationId"), new IntWritable(150))//跟TemperatureReducer输出类型一致
              .runTest();
    }
}

猜你喜欢

转载自www.cnblogs.com/zhoupp/p/10806024.html
今日推荐