`
bo_hai
  • 浏览: 567428 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Hadoop 使用新API写hello word

 
阅读更多

代码如下:

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configured;
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.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.util.Tool;
import org.apache.hadoop.util.ToolRunner;



public class WordCountNew extends Configured implements Tool{

	public static class WordCountReduceMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
		
		private final static IntWritable one = new IntWritable(1);
		private Text word = new Text();
		
		@Override
		protected void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException {
			// 读取一行数据
			String line = value.toString();
			// 用空格分割成单词
			StringTokenizer st = new StringTokenizer(line);
			// 将单词与数量输出
			while (st.hasMoreTokens()) {
				word.set(st.nextToken());
				context.write(word, one);
			}
		}
	}
	
	
	
		
	public static class WordCountReduce extends Reducer<Text, IntWritable, Text, IntWritable> {
		
		private IntWritable result = new IntWritable();
		
		
		/**
		 * 相同key的数据会一起传送给reduce,因此reduce阶段中的key值是相同,values 可以是多个,其值都是1
		 */
		@Override
		protected void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {
			int sum = 0;
			// 通过循环,得出values的和
			for (IntWritable value : values) {
				sum += value.get();
			}
			result.set(sum);
			context.write(key, result);
		}
	}
	
	@Override
	public int run(String[] args) throws Exception {

		Job job = new Job(getConf());
		job.setJarByClass(WordCountNew.class);
		job.setJobName("mywordcount");
		
		job.setInputFormatClass(TextInputFormat.class);
		job.setOutputFormatClass(TextOutputFormat.class);
		
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
		
		job.setMapperClass(WordCountReduceMapper.class);
		job.setReducerClass(WordCountReduce.class);
		job.setCombinerClass(WordCountReduce.class);
		
		FileInputFormat.setInputPaths(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		
		boolean  success = job.waitForCompletion(true);
		return success ? 0:1;
	}	

	public static void main(String[] args) throws Exception {
		int result = ToolRunner.run(new WordCountNew(), args);
		System.exit(result);
	}

}

 

分享到:
评论

相关推荐

    Hadoop2.6_API.chm

    Hadoop2.6版本稳定版API文档CHM文件

    hadoop中文版API

    hadoop中文版API.chm文件,查找hadoop的类中方法、方法的用法等,方便、好用

    教你如何查看API及使用hadoop新api编程 高清完整版PDF下载

    在实际应用中,建议使用新API来编写MapReduce程序,以充分利用Hadoop的强大功能。 - **注意事项**:尽管旧API仍然可以使用,但在未来的版本中可能会被彻底废弃。因此,在进行新项目的开发时,建议使用新API。 - **...

    教你如何查看API及使用hadoop新api编程

    ### Hadoop新旧API对比及应用实践 #### 一、Hadoop API概述 Hadoop作为一个分布式计算框架,提供了丰富的...总之,在实际开发过程中,建议优先使用Hadoop的新API,以充分利用其优势,并确保代码的可维护性和扩展性。

    hadoop中文版API.zip

    Hadoop中文版API是针对Apache Hadoop开源框架的中文文档,它为开发者提供了全面的、易于理解的API指南,帮助中国开发者更好地理解和使用Hadoop。Hadoop是一个分布式计算框架,广泛应用于大数据处理和分析,其核心...

    hadoop-yarn-api-2.5.1-API文档-中文版.zip

    赠送jar包:hadoop-yarn-api-2.5.1.jar; 赠送原API文档:hadoop-yarn-api-2.5.1-javadoc.jar; 赠送源代码:hadoop-yarn-api-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-yarn-api-2.5.1.pom; 包含翻译后...

    hadoop2.6-api.zip

    通过解压并使用“hadoop2.6-api.zip”,开发者可以直接引用这些API,构建自己的Hadoop应用程序,进行大数据的存储、检索和分析。直接打开“index”文件,可以查看API的详细文档,帮助理解和使用这些接口。Hadoop 2.6...

    Hadoop1.0.0权威API参考

    Hadoop1.0.0权威API参考

    一步一步跟我学习hadoop(6)----hadoop利用FileSystem API 执行hadoop文件读写操作

    在Hadoop生态系统中,`FileSystem API`是核心组件之一,它提供了一套接口,使得开发者可以方便地进行文件系统的操作,如读取、写入、移动和删除文件。本篇文章将详细讲解如何利用`FileSystem API`执行Hadoop文件的...

    Hadoop.chm HadoopAPI Hadoop英文版最新API

    Hadoop是Apache Lucene的创始人 Doung Cutting 创建的, Hadoop起源于Apache Nutch, 一个开源的网络搜索引擎,也是Apache的Lucene项目的一部分。Hadoop是创始人Doung Cutting的儿子给一头大象起的名字。 Hadoop的子...

    HadoopAPI使用

    Hadoop API 使用指南 Hadoop API 是 Hadoop 项目的核心组件之一,它提供了一组丰富的 API,用于开发基于 Hadoop 的应用程序。Hadoop API 主要由多个包组成,每个包都提供了特定的功能。 org.apache.hadoop.conf 包...

    Hadoop 2.10.0中文版API

    Hadoop 2.10.0中文版API是大数据处理领域的一个重要参考资料,它为开发者提供了详尽的接口文档,帮助他们理解和使用Hadoop生态系统中的各种组件。Hadoop是一个开源框架,主要用于分布式存储和分布式计算,是大数据...

    Hadoop 0.20.2 API文档

    Hadoop 0.20.2 API文档是开发者在使用开源分布式架构Hadoop时的重要参考资料。这个版本的API文档详细地介绍了如何利用Java语言来与Hadoop生态系统进行交互,为开发人员提供了丰富的功能和工具,以实现大规模数据处理...

    hadoop-yarn-api-2.7.3-API文档-中英对照版.zip

    赠送jar包:hadoop-yarn-api-2.7.3.jar; 赠送原API文档:hadoop-yarn-api-2.7.3-javadoc.jar; 赠送源代码:hadoop-yarn-api-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-yarn-api-2.7.3.pom; 包含翻译后...

    hadoop-yarn-api-2.5.1-API文档-中英对照版.zip

    赠送jar包:hadoop-yarn-api-2.5.1.jar; 赠送原API文档:hadoop-yarn-api-2.5.1-javadoc.jar; 赠送源代码:hadoop-yarn-api-2.5.1-sources.jar; 包含翻译后的API文档:hadoop-yarn-api-2.5.1-javadoc-API文档-...

    Hadoop 0.20.2 API

    3. **org.apache.hadoop.mapreduce**: 这是MapReduce的新一代API,它在Hadoop 0.20.x版本中引入,目的是提供更高级的功能和更好的性能。`MapReduce`类库包含`Mapper`, `Reducer`, `Driver`, `Context`等,这些类使得...

    hadoop2API帮助文档

    Hadoop2 API帮助文档是针对Hadoop 2.x版本的核心组件提供的一份详细参考资料,旨在帮助开发者高效地利用Hadoop框架进行大数据处理和分析。Hadoop是一个开源的分布式计算框架,由Apache软件基金会维护,其核心包括...

    hadoop0.23.9离线api

    hadoop0.23.9离线api,解压后进入 doc 目录 ,双击 index.html 和javaapi一样 All Classes Packages org.apache.hadoop org.apache.hadoop.classification org.apache.hadoop.conf org.apache.hadoop.contrib....

    Hadoop+HBase+Java API

    具体使用Java API开发时,首先需要配置Hadoop和HBase的相关环境,包括设置HADOOP_CONF_DIR和HBASE_HOME环境变量。然后,开发者可以创建一个MapReduce作业,定义Mapper和Reducer类,使用`FileInputFormat`和`...

    hadoop-yarn-client-2.6.5-API文档-中文版.zip

    包含翻译后的API文档:hadoop-yarn-client-2.6.5-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.hadoop:hadoop-yarn-client:2.6.5; 标签:apache、client、hadoop、yarn、jar包、java、中文文档; ...

Global site tag (gtag.js) - Google Analytics