wordcount的MapReduce程序编写

在之前我已经介绍过MapReduce程序运行时的过程,接下来我们自己编写一个wordcount程序,我会在代码中做详细的标注:

不多说直接上代码:(不继承也不实现)

package com.superyong.mapreduce;

import org.apache.hadoop.conf.Configuration;
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.fs.Path;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;

/**
 * 词频统计 MapReduce 程序
 * 还记得之前在虚拟机上运行的那个 wordcount 模板么
 * bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /datas/mapreduce_test/input /datas/mapreduce_test/output/output01
 * 这上面的参数 依次顺序是: 执行平台-》执行包的类型-》包所在的绝对目录-》执行的类-》被执行文件路径(hdfs路径)-》执行结果文件存放路径(hdfs路径)
 * 这里说一下因为官方提供的类有默认的执行类名,我们没有设置,所以执行类的时候,要写类的全路径
 */
public class WordCountMapReduce {

    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {

        //这里判断一下参数的个数,上面说过,
        //运行这个程序需要指定 ‘被运行文件’ 和‘结果文件’的目录,
        //这两个参数通过main函数中的args传递,可以在执行时打开配置来设置这两个参数!
        if (args.length < 2){
            System.out.println( "Usage:WordCountMapReduce <in> [<in>...] <out>" );
            return;
        }

        //读取配置文件信息;注意别导错包!是hadoop的包
        Configuration configuration = new Configuration();

        //创建一个job任务
        /*
          import org.apache.hadoop.mapred.jobcontrol.Job;   hadoop 1.x
          import org.apache.hadoop.mapreduce.Job;     hadoop 2.x
          注意这两包:虽然都是job类,但是一个是1.0版本的hadoop包一个是2.0版本的hadoop包
         */
        //  public static Job getInstance( Configuration conf, String jobName )
        //  这两个参数一个是配置文件,一个是application中的job任务名,运行程序之后就可以在8088上看到
        Job job = Job.getInstance( configuration, "WordCount" );

        //设置Job任务运行的主类
        job.setJarByClass( WordCountMapReduce.class );

        //设置job

        //input
        Path inputPath = new Path( args[0] );//获取被执行文件的目录
        FileInputFormat.setInputPaths( job,inputPath );

        //这两个可以等代码写完之后在进行设置,如果已经知道类型就直接设置:
        //map
        job.setMapperClass( WordCountMapper.class );
        job.setMapOutputKeyClass
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值