运行WordCount程序
来源:互联网 发布:淘宝可以买限定皮肤吗 编辑:程序博客网 时间:2024/05/22 16:48
一、实验题目
编写一个MapReduce程序WordCount
二、实验目的
该程序能够计算单词数以及每个单词出现的频率。
三、任务分析
计数很简单,mapper中将文档拆成n个单词,记为<word,1>的形式,reducer的时候将键值相同的相加就可以统计出每个单词的频率。
所有键值相加,就可以得出总数。
四、实验步骤
1.将Hadoop的安全模式关闭,命令为:
hadoop dfsadmin -safemode leave
2.将待处理文件导入到hdfs文件中,命令为:
bin/hadoop dfs -copyFromLocal 源文件位置 hdfs:/
3.启动eclipse,建立Java project,导入相关jar文件,开始编码。
mapper部分代码:
package com.bigdata;import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;/** * * @author training Class: WordCountMapper **/public class WordCountMapper extendsMapper<LongWritable, Text, Text, IntWritable> {/** * Optimization: Instead of creating the variables in the */@Overridepublic void map(LongWritable inputKey, Text inputVal, Context context)throws IOException, InterruptedException {String line = inputVal.toString();String[] splits = line.trim().split("\\W+");for (String outputKey : splits) {context.write(new Text(outputKey), new IntWritable(1));}}}首先用trim方法去除头尾的空格,然后使用\\W+按英文字符串分割。
接着将splits中的元素取出,输出格式为<word,1>
然后是reducer函数:
package com.bigdata;import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;public class WordCountReducer extendsReducer<Text, IntWritable, Text, IntWritable> {@Overridepublic void reduce(Text key, Iterable<IntWritable> listOfValues,Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable val : listOfValues) {sum = sum + val.get();}context.write(key, new IntWritable(sum));}}将所有key值相同的value相加,并输出<word,sum>
wordcount程序就写完了。
最后是driver函数:
package com.bigdata;import org.apache.hadoop.conf.Configured;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;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.util.Tool;import org.apache.hadoop.util.ToolRunner;public class WordCountDriver extends Configured implements Tool {public static void main(String[] args) throws Exception {ToolRunner.run(new WordCountDriver(), args);}@Overridepublic int run(String[] args) throws Exception {Job job = new Job(getConf(), "Basic Word Count Job");job.setJarByClass(WordCountDriver.class);// Map and Reducejob.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReducer.class);job.setNumReduceTasks(1);job.setInputFormatClass(TextInputFormat.class);// the map outputjob.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// the reduce outputjob.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));job.waitForCompletion(true);return 0;}}
4.编码完毕后export成jar文件
5.执行mapreduce
6.查看结果
0 0
- 运行WordCount程序
- hadoop运行WordCount程序
- Hadoop 运行 Wordcount程序
- 运行wordCount程序
- hadoop平台运行WordCount程序
- Hadoop4Win + Eclipse 运行 WordCount 程序
- Hadoop4Win + Eclipse 运行 WordCount 程序
- Hadoop4Win + Eclipse 运行 WordCount 程序
- 使用hadoop运行wordcount程序
- eclipse运行WordCount程序记录
- wordcount程序运行,路径问题
- 运行Hadoop示例程序WordCount
- WordCount程序运行流程分析
- hadoop2.7运行wordcount程序
- win10+Ecplise运行wordcount程序
- Hadoop2.6.4运行Wordcount程序
- Hadoop示例程序WordCount运行及详解
- 命令行运行hadoop实例wordcount程序
- 【2016.5.22】杭电女赛总结
- 使用hibernate出现no suitable Driver
- Ubuntu 16.04 使用useradd添加用户后没有家目录的解决方法
- Activiti 数据库表信息
- JavaScript DFT 离散傅里叶变换
- 运行WordCount程序
- Android Studio主题设置、颜色背景配置
- SoapUI实现Import Groovy功能
- 二分_Mode(2016swust校赛)
- JavaScript 可配置函数与柯里化
- Reverse Vowels of a String
- 暴力____Football(2016swust校赛)
- 字典树+DFS____字符矩阵(2015swust院赛)
- 坚刚不可夺其志