数据存储实验5-编写MapReduce程序实现词频统计.doc(实验报告).doc
《数据存储实验5-编写MapReduce程序实现词频统计.doc(实验报告).doc》由会员分享,可在线阅读,更多相关《数据存储实验5-编写MapReduce程序实现词频统计.doc(实验报告).doc(5页珍藏版)》请在冰豆网上搜索。
《数据存储技术》实验5编写MapReduce程序实现词频统计
《数据存储技术》
实验5
编写MapReduce程序实现词频统计
1作业题目
熟悉MapReduce编程。
2作业目的
1. 理解Hadoop中MapReduce模块的处理逻辑
2. 熟悉MapReduce编程
3实验平台
操作系统:
Linux
工具:
Eclipse或者IntellijIdea等JavaIDE
4实验内容和要求
1.在电脑上新建文件夹input,并input文件夹中创建三个文本文件:
file1.txt,file2.txt,file3.txt
三个文本文件的内容分别是:
file1.txt:
bigdataapplicationsciencebigdatahadoopmapreducescience
file2.txt:
mapreducesciencebigdatahadoop
file3.txt:
hadoopmapreducewordcountcomputerscience
2.启动hadoop伪分布式,将input文件夹上传到HDFS上
3.编写mapreduce程序,实现单词出现次数统计。
统计结果保存到hdfs的output文件夹。
packageorg.apache.hadoop.examples;
importjava.io.IOException;
importjava.util.Iterator;
importjava.util.StringTokenizer;
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.fs.Path;
importorg.apache.hadoop.io.IntWritable;
importorg.apache.hadoop.io.Text;
importorg.apache.hadoop.mapreduce.Job;
importorg.apache.hadoop.mapreduce.Mapper;
importorg.apache.hadoop.mapreduce.Reducer;
importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;
importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
importorg.apache.hadoop.util.GenericOptionsParser;
publicclassWordCount{
publicWordCount(){
}
publicstaticvoidmain(String[]args)throwsException{
Configurationconf=newConfiguration();
String[]otherArgs=(newGenericOptionsParser(conf,args)).getRemainingArgs();
if(otherArgs.length<2){
System.err.println("Usage:
wordcount[...]");
System.exit
(2);
}
Jobjob=Job.getInstance(conf,"wordcount");
job.setJarByClass(WordCount.class);
job.setMapperClass(WordCount.TokenizerMapper.class);
job.setCombinerClass(WordCount.IntSumReducer.class);
job.setReducerClass(WordCount.IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
for(inti=0;iFileInputFormat.addInputPath(job,newPath(otherArgs[i]));
}
FileOutputFormat.setOutputPath(job,newPath(otherArgs[otherArgs.length-1]));
System.exit(job.waitForCompletion(true)?
0:
1);
}
publicstaticclassIntSumReducerextendsReducer{
privateIntWritableresult=newIntWritable();
publicIntSumReducer(){
}
publicvoidreduce(Textkey,Iterablevalues,Reducer.Contextcontext)throwsIOException,InterruptedException{
intsum=0;
IntWritableval;
for(Iteratori$=values.iterator();i$.hasNext();sum+=val.get()){
val=(IntWritable)i$.next();
}
this.result.set(sum);
context.write(key,this.result);
}
}
publicstaticclassTokenizerMapperextendsMapper
privatestaticfinalIntWritableone=newIntWritable
(1);
privateTextword=newText();
publicTokenizerMapper(){
}
publicvoidmap(Objectkey,Textvalue,Mapper
StringTokenizeritr=newStringTokenizer(value.toString());
while(itr.hasMoreTokens()){
this.word.set(itr.nextToken());
context.write(this.word,one);
}
}
}
}
4.获取统计结果(给出截图或相关结果数据)
5实验报告
《数据存储技术》实验报告
题目:
编写MapReduce程序实现词频统计
姓名:
日期:
2021.5.19
实验环境:
操作系统:
Linux
工具:
Eclipse或者IntellijIdea等JavaIDE
实验内容与完成情况:
1.在电脑上新建文件夹input,并input文件夹中创建三个文本文件:
file1.txt,file2.txt,file3.txt
2.启动hadoop伪分布式,将input文件夹上传到HDFS上
3.编写mapreduce程序,实现单词出现次数统计。
统计结果保存到hdfs的output文件夹。
4.获取统计结果(给出截图或相关结果数据)
均已完成
出现的问题:
无
解决方案(列出遇到的问题和解决办法,列出没有解决的问题):
无