在idea中编写wordcount程序

一、wordcount介绍

1、需求
统计给定文本文件中每一个单词出现的总次数,并输出。

2、输入数据
每个单词之间以"\t"分割
在这里插入图片描述3、期望输出数据

hadoop	2
spark	1
sqoop	1
hbase	1
kafka	1
flume	1
mapreduce	1

二、wordcount 流程分析

按照 MapReduce 编程规范,我们需要分别编写 Mapper、Reducer、Driver。下图为流程分析:
在这里插入图片描述

三、idea环境准备

1、创建 maven 工程
在这里插入图片描述在这里插入图片描述在这里插入图片描述

2、在 pom 中添加依赖
注意这里要根据自己的开发环境进行对应的配置

 <!--阿里云搭建了一个国内镜像http://maven.aliyun.com,跑起来速度很快,可以进行配置-->
    <repositories>
        <repository>
            <id>nexus-aliyun</id>
            <name>nexus-aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
        </dependency
  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 IDEA 开发 WordCount,你需要创建一个 Maven 项目,并添加 HadoopHadoop MapReduce 的依赖项。然后,你可以编写一个 Mapper 类和一个 Reducer 类来执行 MapReduce 任务。 以下是一个简单的 WordCount 示例: 1. 创建 Maven 项目 在 IDEA 创建 Maven 项目,添加以下依赖项: ```xml <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>2.7.1</version> </dependency> </dependencies> ``` 2. 编写 Mapper 类 创建一个类,实现 Mapper 接口,并重写 map() 方法。map() 方法将输入的文本分割成单词并输出为键值对。例如: ```java public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); context.write(word, one); } } } ``` 3. 编写 Reducer 类 创建一个类,实现 Reducer 接口,并重写 reduce() 方法。reduce() 方法将相同的单词进行累加并输出结果。例如: ```java public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } ``` 4. 配置运行参数 在 main() 方法配置运行参数,例如: ```java public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(WordCountMapper.class); job.setCombinerClass(WordCountReducer.class); job.setReducerClass(WordCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } ``` 5. 运行程序 在运行程序之前,需要在 Hadoop 集群上先部署程序。在 IDEA 打包项目,将打包好的 jar 文件上传到 Hadoop 集群上,并执行以下命令运行程序: ```bash hadoop jar wordcount.jar input output ``` 其,input 是输入文件路径,output 是输出文件路径。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值