前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop快速入门——第三章、MapReduce案例(字符统计)

Hadoop快速入门——第三章、MapReduce案例(字符统计)

作者头像
红目香薰
发布2022-11-29 21:49:02
2500
发布2022-11-29 21:49:02
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode

Hadoop快速入门——第三章、MapReduce案例

目录

环境要求:

1、项目创建:

2、修改Maven

3、编码

4、本地文件测试

5、修改【Action】文件(修改测试文件路径)

6、导出jar包

7、启动hadoop服务?

8、上传【jar】包以及【info.txt】文件至【/opt/soft/hadoop/share/hadoop/mapreduce】 下

9、创建存储文件的文件夹

10、通过【jar】执行

?11、查看生成结果

12、总结

环境要求:

1、分布式/伪分布式的hadoop环境【hadoop2.7.3】

2、win10本地Java环境【jdk8】

3、win10本地hadoop环境【2.7.3】

4、win10本地Maven环境【Maven3】

5、idea开发工具【IntelliJ IDEA 2020.1.3 x64】

1、项目创建:

需要建立【maven】项目,建立过程中

项目名称无所谓:

2、修改Maven

点击【file】->【Settings】后如下图操作,选择本地的Maven配置文件以及仓库地址。

引入【hadoop-client】

代码语言:javascript
复制
    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.3</version>
        </dependency>
    </dependencies>

3、编码

在【src的java】下创建【com.item.test】包,以及【MapAction】【ReduceAction】【Action】的类文件。

【MapAction】编码

代码语言:javascript
复制
package com.item.test;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

public class MapAction extends Mapper<LongWritable, Text, Text, LongWritable> {
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        char[] split = value.toString().toCharArray();
        for (char s : split) {
            context.write(new Text(s+""), new LongWritable(1));
        }
    }
}

【ReduceAction】编码

代码语言:javascript
复制
package com.item.test;


import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class ReduceAction extends Reducer<Text, LongWritable, Text, LongWritable> {
    @Override
    protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {
        long count = 0;
        for (LongWritable value : values) {
            count += value.get();
        }
        context.write(key, new LongWritable(count));
    }
}

【Action】编码

代码语言:javascript
复制
package com.item.test;

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

import java.io.IOException;

public class Action {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf);
        job.setJarByClass(Action.class);
        job.setMapperClass(MapAction.class);
        job.setReducerClass(ReduceAction.class);

        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(LongWritable.class);

        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LongWritable.class);
        //本地测试
        FileInputFormat.setInputPaths(job,new Path("D:\\info.txt"));
        FileOutputFormat.setOutputPath(job,new Path("D:\\infos"));

        boolean b = job.waitForCompletion(true);
        System.exit(b?0:1);
    }
}

4、本地文件测试

本地测试文件【D:\\info.txt】:

代码语言:javascript
复制
Accept that this is your starting point.Instead of placing judgements on it,see the real,positive value that’s already yours.You cannot change where your past priorities and choices have brought you.Yet you can make use of the wisdom you’ve earned to create a future that fulfils your most treasured dreams.
相信此刻就是你的起点。无需再判断,看到你所具备的真正意义上的价值。你过去认为重要的事和以前做过的选择给你带来了什么都是无法改变的。然而你可以充分利用你的智慧去创造未来,实现你最珍爱的梦想。

测试成功:

5、修改【Action】文件(修改测试文件路径)

代码语言:javascript
复制
package com.item.test;

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

import java.io.IOException;

public class Action {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf);
        job.setJarByClass(Action.class);
        job.setMapperClass(MapAction.class);
        job.setReducerClass(ReduceAction.class);

        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(LongWritable.class);

        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LongWritable.class);
        //本地测试
        FileInputFormat.setInputPaths(job,new Path("/info/info.txt"));
        FileOutputFormat.setOutputPath(job,new Path("/infos"));

        boolean b = job.waitForCompletion(true);
        System.exit(b?0:1);
    }
}

6、导出jar包

依次点击【file】【Project Structure】

点击【Artfacts】【JAR】【From modules with dependencies...】

点击【OK】退出即可

点击【Build】【Build Artfacts...】?

????????

在项目层级中可以看到生成的【out】文件夹,打开后找到对应的【jar】包文件。?

7、启动hadoop服务?

8、上传【jar】包以及【info.txt】文件至【/opt/soft/hadoop/share/hadoop/mapreduce】 下

9、创建存储文件的文件夹

输入以下命令:

代码语言:javascript
复制
cd /opt/soft/hadoop/share/hadoop/mapreduce
hadoop fs -mkdir /info
hadoop fs -put info.txt /info/info.txt
hadoop fs -cat /info/info.txt

?文件位置:?

10、通过【jar】执行

代码语言:javascript
复制
hadoop jar DEMO1.jar com/item/test/Action /info/info.txt /infos

生成文件位置:?

11、查看生成结果

代码语言:javascript
复制
hadoop fs -cat /infos/part-r-00000

12、总结

1、常用的【hdfs】命令一定要熟悉,用的很多。

2、在服务器中运行的时候不能使用【绝对地址D:\\类似的路径】

3、如果存在导出文件夹则会报错,故而生成的文件一定要放置在没有的文件夹内。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hadoop快速入门——第三章、MapReduce案例
    • 环境要求:
      • 1、项目创建:
        • 2、修改Maven
          • 3、编码
            • 4、本地文件测试
              • 5、修改【Action】文件(修改测试文件路径)
                • 6、导出jar包
                  • 7、启动hadoop服务?
                    • 8、上传【jar】包以及【info.txt】文件至【/opt/soft/hadoop/share/hadoop/mapreduce】 下
                      • 9、创建存储文件的文件夹
                        • 10、通过【jar】执行
                          • 12、总结
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                          http://www.vxiaotou.com