尚硅谷大数据技术之Hadoop(MapReduce)(新)第3章 MapReduce框架原理

4)编写TableDriver类

package com.atguigu.mapreduce.table;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.NullWritable;

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;

 

public class TableDriver {

 

public static void main(String[] args) throws Exception {

// 0 根据自己电脑路径重新配置

args = new String[]{"e:/input/inputtable","e:/output1"};

 

// 1 获取配置信息,或者job对象实例

Configuration configuration = new Configuration();

Job job = Job.getInstance(configuration);

 

// 2 指定本程序的jar包所在的本地路径

job.setJarByClass(TableDriver.class);

 

// 3 指定本业务job要使用的Mapper/Reducer业务类

job.setMapperClass(TableMapper.class);

job.setReducerClass(TableReducer.class);

 

// 4 指定Mapper输出数据的kv类型

job.setMapOutputKeyClass(Text.class);

job.setMapOutputValueClass(TableBean.class);

 

// 5 指定最终输出的数据的kv类型

job.setOutputKeyClass(TableBean.class);

job.setOutputValueClass(NullWritable.class);

 

// 6 指定job的输入原始文件所在目录

FileInputFormat.setInputPaths(job, new Path(args[0]));

FileOutputFormat.setOutputPath(job, new Path(args[1]));

 

// 7 将job中配置的相关参数,以及job所用的java类所在的jar包, 提交给yarn去运行

boolean result = job.waitForCompletion(true);

System.exit(result ? 0 : 1);

}

}

4.测试

运行程序查看结果

1001 小米 1

1001 小米 1

1002 华为 2

1002 华为 2

1003 格力 3

1003 格力 3