`

Hadoop读书笔记(五)MapReduce统计单词demo

阅读更多

Hadoop读书笔记(一)Hadoop介绍http://blog.csdn.net/caicongyang/article/details/39898629

Hadoop读书笔记(二)HDFS的shell操作http://blog.csdn.net/caicongyang/article/details/41253927

Hadoop读书笔记(三)Java API操作HDFShttp://blog.csdn.net/caicongyang/article/details/41290955

Hadoop读书笔记(四)HDFS体系结构http://blog.csdn.net/caicongyang/article/details/41322649

 

1.demo说明

功能:统计文章中每一个单词出现的次数

数据文件格式:

 

hello	you
hello	me



步骤:

1.1读取hdfs中的文件。每一行解析成一个<k,v>。每一个键值对调用一次map函数

 

1.2 覆盖map(),接收1.1产生的<k,v>,进行处理,转换为新的<k,v>输出

 

1.3 对1.2输出的<k,v>进行分区。默认分为1个区

 

1.4 对不同分区中的数据进行排序(按照k)、分组。分组指的是相同key的value放到一个集合中

 

1.5 (可选)对分组后的数据进行规约。

 

2.1 多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点上。

2.2 对多个map的输出进行合并、排序。覆盖reduce函数,接收的是分组后的数据,实现自己的业务逻辑,处理后,产生新的<k,v>输出。

 

2.3 对reduce输出的<k,v>写到hdfs中。

2.代码

WordCount.java
package mapReduce;

import java.io.IOException;
import java.net.URI;

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


public class WordCount {
	private static final String INPUT_PATH="hdfs://192.168.80.100:9000/hello";
	private static final String OUT_PATH="hdfs://192.168.80.100:9000/out";
	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration();
		FileSystem fileSystem = FileSystem.get(new URI(INPUT_PATH),conf);
		Path outPath = new Path(OUT_PATH);
		if(fileSystem.exists(outPath)){
			fileSystem.delete(outPath,true);
		}
		//创建作业
		Job job = new Job(conf, WordCount.class.getSimpleName());
		//1.1读取指定的文件
		FileInputFormat.setInputPaths(job, INPUT_PATH);
		//输入文件格式化
		job.setInputFormatClass(TextInputFormat.class);
		
		//1.2指定自定义Mapper类
		job.setMapperClass(MyMapper.class);
		//指定输出类型
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(LongWritable.class);
		
		//1.3分区
		job.setPartitionerClass(HashPartitioner.class);
		//设置reduce个数
		job.setNumReduceTasks(1);
		
		//1.4排序、分组
		
		//1.5归约
		
		//2.2指定Reducer类
		job.setReducerClass(MyReducer.class);
		
		//设定输出类型
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(LongWritable.class);
		
		//输出地址
		FileOutputFormat.setOutputPath(job, new Path(OUT_PATH));
		
		//输出文件格式化类
		job.setOutputFormatClass(TextOutputFormat.class);
		
		//job交给JobTracker执行
		job.waitForCompletion(true);
	}
	
	
	static class MyReducer extends Reducer<Text, LongWritable, Text, LongWritable>{
		@Override
		protected void reduce(Text key, Iterable<LongWritable> value, Context context) throws IOException, InterruptedException {
			long count = 0L;
			for(LongWritable times :value ){
				count += times.get();
			}
			context.write(key, new LongWritable(count));
		}
		
	}
	
	static class MyMapper extends Mapper<LongWritable ,Text,Text,LongWritable>{
		@Override
		protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
			String[] splited = value.toString().split("\t");
			for(String word:splited){
				context.write(new Text(word), new LongWritable(1));
			}
		}
	}
	
}




欢迎大家一起讨论学习!

有用的自己收!

记录与分享,让你我共成长!欢迎查看我的其他博客;

 

我的个人博客:http://blog.caicongyang.com

我的CSDN博客地址:http://blog.csdn.net/caicongyang;

 
 



 

 

 

 

 

分享到:
评论

相关推荐

    基于 Hadoop 平台,使用 MapReduce 编程,统计NBA球员五项数据.zip

    在这个项目“基于 Hadoop 平台,使用 MapReduce 编程,统计NBA球员五项数据”中,我们将深入探讨如何利用 Hadoop 的核心组件 MapReduce 对 NBA 球员的数据进行分析。 MapReduce 是一种编程模型,用于大规模数据集...

    Hadoop原理与技术MapReduce实验

    1.单词计数实验(wordcount) (1)输入start-all.sh启动hadoop相应进程和相关的端口号 (2)打开网站localhost:8088和localhost:50070,查看MapReduce任务启动情况 (3)写wordcount代码并把代码生成jar包 (4)运行...

    大数据 hadoop mapreduce 词频统计

    【大数据Hadoop MapReduce词频统计】 大数据处理是现代信息技术领域的一个重要概念,它涉及到海量数据的存储、管理和分析。Hadoop是Apache软件基金会开发的一个开源框架,专门用于处理和存储大规模数据集。Hadoop的...

    hadoop-mapreduce-examples 官方demo源码

    hadoop-mapreduce-examples 官方demo源码 hadoop-mapreduce-examples-2.7.7-sources

    hadoop集群配置及mapreduce开发手册

    ### Hadoop集群配置及MapReduce开发手册知识点梳理 #### 一、Hadoop集群配置说明 ##### 1.1 环境说明 本手册适用于基于CentOS 5系统的Hadoop集群配置,具体环境配置如下: - **操作系统**:CentOS 5 - **JDK版本...

    Hadoop集群配置及MapReduce开发手册

    ### Hadoop集群配置及MapReduce开发手册知识点梳理 #### 一、Hadoop集群配置 **1.1 环境说明** - **操作系统**: CentOS 5 - **JDK版本**: Sun Java 6 - **SSH**: 已安装 - **Eclipse版本**: 3.4.2 (Linux版) - **...

    Hadoop集群搭建部署与MapReduce程序关键点个性化开发.doc

    本文将详细阐述如何搭建Hadoop集群以及进行MapReduce程序的关键点个性化开发。 首先,我们来看任务1——Hadoop集群的部署。这一步至关重要,因为它为整个大数据处理系统提供了基础架构。在虚拟机中安装Ubuntu Kylin...

    Hadoop mapreduce实现wordcount

    WordCount 是 MapReduce 框架中经典的入门示例,它统计文本文件中每个单词出现的次数。在这个案例中,我们将深入探讨如何在 Hadoop 环境中使用 MapReduce 实现 WordCount。 【描述】在 Hadoop 环境中,WordCount 的...

    Hadoop计算框架:MapReduce

    文档较详尽的讲述了MR的简介,MR初学分析示例(有代码)、MR特性,MR的执行过程(有代码),MR单元测试介绍(有代码)、HA的架构和配置、同时也向大众推荐了两本书。其中部分有较为详尽的链接以供参考。

    mapreduce在hadoop实现词统计和列式统计

    在这个场景中,我们将讨论如何使用Hadoop的MapReduce来实现词统计和列式统计。 **一、MapReduce原理** MapReduce的工作流程主要包括三个主要阶段:Map、Shuffle(排序)和Reduce。在Map阶段,输入数据被分割成多个...

    Hadoop 权威指南读书笔记

    Hadoop 权威指南读书笔记 我自己画的一张图

    Hadoop介绍,HDFS和MapReduce工作原理

    Hadoop介绍,HDFS和MapReduce工作原理

    hadoop-mapreduce-client-core-2.5.1-API文档-中文版.zip

    赠送jar包:hadoop-mapreduce-client-core-2.5.1.jar; 赠送原API文档:hadoop-mapreduce-client-core-2.5.1-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-core-2.5.1-sources.jar; 赠送Maven依赖信息文件:...

    05.hadoop上课笔记之hadoop5mapreduce和yarn

    Hadoop.MapReduce 和 YARN 笔记 本节笔记主要介绍了 Hadoop.MapReduce 和 YARN 的基本概念、组成部分、工作原理以及实践应用。 一、MapReduce 概念 MapReduce 是 Hadoop 的核心组件之一,负责处理大规模数据。...

    Python开发mapreduce的demo

    总的来说,这个Python MapReduce的demo提供了一个基础的框架,帮助开发者理解如何在Python中实现MapReduce的流程。通过学习和实践这个示例,你可以更好地掌握分布式计算的核心思想,并将其应用到更复杂的大型数据...

    hadoop-mapreduce-examples-2.7.1.jar

    hadoop-mapreduce-examples-2.7.1.jar

    尚硅谷大数据技术之Hadoop(MapReduce)1

    【尚硅谷大数据技术之Hadoop(MapReduce)1】深入解析MapReduce MapReduce是Google提出的一种用于处理和生成大规模数据集的编程模型,被广泛应用于大数据处理领域。Hadoop将其作为核心组件,实现了分布式计算的功能...

    Hadoop/HDFS/MapReduce/HBase

    对Hadoop中的HDFS、MapReduce、Hbase系列知识的介绍。如果想初略了解Hadoop 可下载观看

Global site tag (gtag.js) - Google Analytics