MapReduce编程初体验(idea+VMware):统计一个文档里的单词数量

将在idea里的java代码放在VMware里运行,具体操作步骤
java代码与在idea里的差不多,只有WordCountDriverLinux 做了一点改变
其他的代码参考 MapReduce编程初体验(idea):统计一个文档里的单词个数

编写 WordCountDriverLinux 类

package com.czxy.test01;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
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.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

/**
 * @author Hxm
 * @version v 1.0
 * @date 2019/11/12 16:01
 */
public class WordCountDriverLinux extends Configured implements Tool {
    /**
     * 将自己的 map  Reduce 代码添加到框架中
     */
    @Override
    public int run(String[] strings) throws Exception {
        //1.实例一个 Job
        Job job = Job.getInstance(new Configuration(), "wordCount12");
		
		//设置具体的任务类
        job.setJarByClass(WordCountDriverLinux.class);

        //2.设置读取数据的class
        job.setInputFormatClass(TextInputFormat.class);
        //  设置读取数据的路径 文件需要在hdfs
        //如果指定的是一个文件夹,那么就读取这个文件夹下的所有文档
        //如果指定的是一个具体的文档,那么就读取这个文档
        TextInputFormat.addInputPath(job,new Path("hdfs://192.168.100.11:8020/aaaa"));

        //3.设置map
        job.setMapperClass(WordCountMap.class);
        //  设置map输出的类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(LongWritable.class);

        //4.设置reduce
        job.setReducerClass(WordCountReduce.class);
        //  设置reduce的输出的类型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LongWritable.class);

        //5.设置输出数据的class
        job.setOutputFormatClass(TextOutputFormat.class);
        //  设置输出数据的路径  
        //hdfs上这个输出路径不能存在
        TextOutputFormat.setOutputPath(job,new Path("hdfs://192.168.100.11:8020/bbbb"));

        job.setNumReduceTasks(3);

        //6.等待代码执行(返回状态码)
        return job.waitForCompletion(true)?0:1;
    }

    public static void main(String[] args) throws Exception {
        //调用执行
        int run = ToolRunner.run(new WordCountDriverLinux(), args);
    }
}

java代码写完后,将代码打 jar 包

在打jar包之前,需要先清除之前的 jar
在这里插入图片描述

在进行打 jar 包的操作

在这里插入图片描述
在target里会出现两个 jar 包:
test-1.0-SNAPSHOT.jar 这个 jar 比较小,因为里面只有代码。
original-test-1.0-SNAPSHOT.jar 这个 jar 包比较大,因为里面不仅有代码,还有项目运行所依赖的包。为了在虚拟机里运行不因为缺少包而导致报错,所以建议使用这个 jar 包。

把 jar 包放到虚拟机里

在这里插入图片描述

把需要读取的文档放到hdfs上

[root@node01 ~]# hdfs dfs -mkdir /aaaa
[root@node01 ~]# hdfs dfs -put wordcount.txt /aaaa/wordcount.txt
[root@node01 ~]# hdfs dfs -ls /aaaa
Found 1 items
-rw-r--r--   4 root supergroup        227 2019-11-15 16:37 /aaaa/wordcount.txt

执行运行 jar 包的命令

[root@node01 ~]# hadoop jar original-test-1.0-SNAPSHOT.jar com.czxy.test01.WordCountDriverLinux

说明:
original-test-1.0-SNAPSHOT.jar :需要执行的 jar 包
com.czxy.test01.WordCountDriverLinux :运行的java类

查看文件 看计算的效果

[root@node01 ~]# hdfs dfs -cat /bbbb/part-r-00000
hbase   3
hive    1
spark   6
aaa     1
flume   5
hadoop  3
kafka   3
word    1
count   2
redis   5
storm   5
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值