Hadoop AWS Word Count 例子

在AWS里用Elastic Map Reduce 开一个Cluster

然后登陆master node并编译以下程序:

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

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

public class WordCount {

	public static class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {

		private final 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 tokenizer = new StringTokenizer(line);
			while(tokenizer.hasMoreTokens()) {
				word.set(tokenizer.nextToken());
				context.write(word, one);
			}
		}

	}

	public static class WordCountReducer extends Reducer<Text, IntWritable, Text, 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();
			}
			context.write(key, new IntWritable(sum));
		}

	}

	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration();
		Job job = new Job(conf, "Word Count hadoop-0.20");

        //setting the class names
        job.setJarByClass(WordCount.class);
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountReducer.class);

        //setting the output data type classes
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        //to accept the hdfs input and outpur dir at run time
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));

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

}

设置:

export CLASSPATH=$CLASSPATH:/home/hadoop/*:/home/hadoop/lib/*:‘.‘

javac WordCount.java

jar cvf WordCount.jar *.class

hadoop jar WordCount.jar WordCount s3://15-319-s13/book-dataset/pg_00 /output

运行成功后,因为output文件夹在Hadoop FS下,所以可以这样查看:

hadoop fs -cat /output/part-r-00000  | less

主要参考:

http://kickstarthadoop.blogspot.com/2011/04/word-count-hadoop-map-reduce-example.html

http://kickstarthadoop.blogspot.com/2011/05/word-count-example-with-hadoop-020.html

Hadoop AWS Word Count 例子,码迷,mamicode.com

时间: 2024-10-12 17:04:39

Hadoop AWS Word Count 例子的相关文章

Hadoop AWS Word Count 样例

在AWS里用Elastic Map Reduce 开一个Cluster 然后登陆master node并编译下面程序: import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import o

通过简单的Word Count讲解MapReduce原理以及Java实现

MapReduce原理: MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果.简单地说,MapReduce就是"任务的分解与结果的汇总". 在Hadoop中,用于执行MapReduce任务的机器角色有两个:一个是JobTracker:另一个是TaskTracker,JobTracker是用于调度工作的,TaskTracker是用于执行工作的.一个Hadoop集群中

Hadoop的word co-occurrence实现

Word Co-occurrence一直不知道该怎么正确翻译, 单词相似度?还是共生单词?还是单词的共生矩阵? 这在统计里面是很常用的文本处理算法,用来度量一组文档集中所有出现频率最接近的词组.嗯,其实是上下文词组,不是单词.算是一个比较常用的算法,可以衍生出其他的统计算法.能用来做推荐,因为它能够提供的结果是"人们看了这个,也会看那个".比如做一些协同过滤之外的购物商品的推荐,信用卡的风险分析,或者是计算大家都喜欢什么东西. 比如 I love you , 出现 "I lo

Learn ZYNQ(10) &ndash; zybo cluster word count

1.配置环境说明 spark:5台zybo板,192.168.1.1master,其它4台为slave hadoop:192.168.1.1(外接SanDisk ) 2.单节点hadoop测试: 如果出现内存不足情况如下: 查看当前虚拟内存容量: free -m cd /mnt mkdir swap cd swap/ 创建一个swap文件 dd if=/dev/zero of=swapfile bs=1024 count=1000000 把生成的文件转换成swap文件 mkswap swapfi

mac上eclipse上运行word count

1.打开eclipse之后,建立wordcount项目 package wordcount; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.had

Word Count程序(C语言实现)

Word Count 程序 GitHub地址:https://github.com/MansonYe/Word-Count 一.项目简介 Word Count 是用以统计文本文件的字符数.单词数和行数的常用工具. 二.功能分析及实现情况 · 基本功能: 统计file.c的字符数(实现) 统计file.c的单词数(实现) 统计file.c的行数(实现) · 拓展功能: 递归处理目录下符合类型的文件(实现) 显示代码行.空行和注释行的行数(实现) 支持通配符(* , ?)(实现) · 高级功能: 支

Scala 小技巧 - 单行代码完成word count

单行word count Scala中可以一行命令就能做到word count的效果 假设有如下文本: Hello mr apache spark Hello world apache spark Hello we want study spark Hello we want study apache Hello apache and hadoop 在scala终端中将数据存入list用以模拟 scala> var txt = List("Hello mr apache spark&quo

基于 MapReduce 的单词计数(Word Count)的实现

完整代码: // 导入必要的包 import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.conf.Configuration; import org.apache.

word count程序,以及困扰人的宽字符与字符

一个Word Count程序,由c++完成,有行数.词数.能完成路径下文件的遍历. 遍历文件部分的代码如下: void FindeFile(wchar_t *pFilePath) { CFileFind finder; CString Finddir; Finddir.Format(pFilePath); BOOL ret = finder.FindFile(Finddir); while (ret) { ret = finder.FindNextFile(); CString strPath