大数据学习--Idea上运行WordCount程序

大数据学习

–idea上运行WordCount程序

环境:
idea:ultimate 2018.1

首先打开idea

界面是这样的,我们新建项目,选择maven项目,project SDK选择自己的jdk根目录,直接next

然后是组id和工件id,自己命名,然后next

然后是项目名称和项目存放地址,然后finish

进来项目主页,右下角会有提示,我们选择右边的Enable Auto-Import,这个是自动给我们导入包
我们先设置一下maven环境

file->settings

输入maven到这个页面,我们要修改的是下面两个

第一个设置为maven安装的根目录
下面一个设置为maven->conf->settings
然后在pom.xml文件里面添加一些代码

<dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.6.1</version>
        </dependency>
</dependencies>

log4j是日志打印文件,可以将mapreduce的运行日志打印在控制台,hadoop-client是hadoop客户端,然后我们在src的java文件夹新建一个类,写入wordcount代码

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

import java.io.IOException;

public class HadoopDriver {

    public static class HadoopMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
        private Text textKey = new Text();
        private IntWritable count = new IntWritable();

        @Override
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            String[] words = value.toString().split(",");
            for (String word : words) {
                textKey.set(word);
                count.set(1);
                context.write(textKey, count);
            }
        }
    }

    public static class HadoopReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
        //相同的key聚合 几种类型的key调用reduce几次
        private IntWritable count = new IntWritable();

        @Override
        protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable value : values) {
                sum += value.get();
            }
            count.set(sum);
            context.write(key, count);
        }
    }

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

        Configuration config = new Configuration();
        //把任务封装到job对象
        Job job = Job.getInstance(config);
        //
        job.setJarByClass(HadoopDriver.class);
        job.setMapperClass(HadoopMapper.class);
        job.setReducerClass(HadoopReducer.class);
        //指定map
        // 如果map的输出和reduce输出key-value类型一致  可以不写map
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);
        //指定reducer
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        //告诉hadoop集群 以什么方式读取数据  从哪里读取
        job.setInputFormatClass(TextInputFormat.class);
        TextInputFormat.setInputPaths(job, new Path("D:\\word.txt"));

        //告诉hadoop集群以什么样的方式写入数据   数据写入到哪里
        job.setOutputFormatClass(TextOutputFormat.class);
        Path path = new Path("D:\\wordcount");
        FileSystem fs = FileSystem.get(config);
        if (fs.exists(path)) {
            fs.delete(path, true);
        }
        TextOutputFormat.setOutputPath(job, path);
        //提交任务
        System.exit(job.waitForCompletion(true) ? 0 : 1);


    }

}

这些包,maven会帮你自动下载,你只需要导入就行,计算机必须联网
我们来测试一下,在D盘创建word.txt文件,里面用作为分隔符写字母

然后我们运行wordcount程序

运行结果如下,运行日志被打印出来了,可以看到运行成功,没有报错,我们来检查下统计结果,打开D盘,找到wordcount文件夹

里面有4个文件,我们打开最后一个

可以看到字母统计完成


 上一篇
大数据学习--Idea与Maven的安装与配置 大数据学习--Idea与Maven的安装与配置
大数据学习–idea与maven的安装与配置 环境:idea:ultimate 2018.3maven:3.3.9 1.idea的安装与配置idea下载地址选择ultimate版本下载,这只能免费试用,所有我们需要破解,或者申请资格,
2019-04-18
下一篇 
大数据学习--Hive的安装与使用 大数据学习--Hive的安装与使用
大数据学习–Hive的安装与使用 环境:Hive:2.3.4linux:centOS 6.7VM:15.0.0外部环境:windows 10家庭版远程工具:SecureCRT Hive的安装Hive下载链接下载完成之后,通过远程工具上
2019-04-18
  目录