首页 >> 大全

使用Eclipse开发工具运行MapReduce统计单词出现次数

2023-08-02 大全 16 作者:考证青年

使用开发工具运行统计单词出现次数

1.##我在这里将原先准备好的10000个单词的英语文章通过U盘移动到了系统中,也可以通过其它的方式,比如FTP传输或者将功能增强,直接拖拽进去也可。

2.##将刚才导入的英语文章文档上传到/home/目录下。

:cp ljzEnglish10000.txt /home/hadoop    //将准备好的文档导入/home/hadoop目录下

:cd /usr/local/hadoop    //进入这个目录下才能启动hadoop
:./sbin/start-dfs.sh     //启动Hadoop

3.##启动完后,现在/user/路径下创建input文件夹,然后将刚才复制过去的.txt文件上传到HDFS

:./bin/hdfs dfs -mkdir -p /user/hadoop
:./bin/hdfs dfs -ls
:./bin/hdfs dfs -mkdir input     //相对路径
:./bin/hdfs dfs -mkdir /input    //绝对路径
:./bin/hdfs dfs -put /home/hadoop/ljzEnglish10000.txt input

##4.查看HDFS上传的文件,看一下刚才上传的文件文档是否存在

:./bin/hdfs dfs -ls input

5.##启动开发工具,导入包以及设置环境,再创建.java文件

: cd /usr/local/eclipse
:./eclipse

可以直接采用默认的设置“/home//”,点击“OK”按钮。可以看出,由于当前是采用用户登录了Linux系统,因此,默认的工作空间目录位于用户目录“/home/”下。

启动以后,呈现的界面下图所示

选择“File–>New–>Java ”菜单,开始创建一个Java工程,弹出如下图所示界面。

英语单词统计次数_单词统计程序_

在“ name”后面输入工程名称“”,选中“Use ”,让这个Java工程的所有文件都保存到“/home///”目录下。在“JRE”这个选项卡中,可以选择当前的Linux系统中已经安装好的JDK,比如jdk1.8.0_162。然后,点击界面底部的“Next>”按钮,进入下一步的设置。

进入下一步的设置以后,会弹出如下图所示界面。

需要在这个界面中加载该Java工程所需要用到的JAR包,这些JAR包中包含了与相关的Java API。这些JAR包都位于Linux系统的安装目录下,对于本教程而言,就是在“/usr/local//share/”目录下。点击界面中的“”选项卡,然后,点击界面右侧的“Add JARs…”按钮,弹出如下图所示界面。

在该界面中,上面有一排目录按钮(即“usr”、“local”、“”、“share”、“”、“”和“lib”),当点击某个目录按钮时,就会在下面列出该目录的内容。

为了编写一个程序,一般需要向Java工程中添加以下JAR包:

(1)“/usr/local//share//”目录下的--3.1.3.jar和haoop-nfs-3.1.3.jar;

(2)“/usr/local//share///lib”目录下的所有JAR包;

(3)“/usr/local//share//”目录下的所有JAR包,但是,不包括jdiff、lib、lib-和目录,具体如下图所示。

(4)“/usr/local//share///lib”目录下的所有JAR包。

比如,如果要把“/usr/local//share//”目录下的--3.1.3.jar和haoop-nfs-3.1.3.jar添加到当前的Java工程中,可以在界面中点击相应的目录按钮,进入到目录,然后,界面会显示出目录下的所有内容(如下图所示)。

请在界面中用鼠标点击选中--3.1.3.jar和haoop-nfs-3.1.3.jar,然后点击界面右下角的“确定”按钮,就可以把这两个JAR包增加到当前Java工程中,出现的界面如下图所示。

从这个界面中可以看出,--3.1.3.jar和haoop-nfs-3.1.3.jar已经被添加到当前Java工程中。然后,按照类似的操作方法,可以再次点击“Add JARs…”按钮,把剩余的其他JAR包都添加进来。需要注意的是,当需要选中某个目录下的所有JAR包时,可以使用“Ctrl+A”组合键进行全选操作。全部添加完毕以后,就可以点击界面右下角的“”按钮,完成Java工程的创建,如下图所示:

6.##环境创建好后,在文件下创建一个.class的文件

英语单词统计次数__单词统计程序

如图所示:

##在刚创建好的.class下导入以下代码,并且运行.java文件

1.import java.io.IOException;
2.import java.util.Iterator;
3.import java.util.StringTokenizer;
4.import org.apache.hadoop.conf.Configuration;
5.import org.apache.hadoop.fs.Path;
6.import org.apache.hadoop.io.IntWritable;
7.import org.apache.hadoop.io.Text;
8.import org.apache.hadoop.mapreduce.Job;
9.import org.apache.hadoop.mapreduce.Mapper;
10.import org.apache.hadoop.mapreduce.Reducer;
11.import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
12.import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
13.import org.apache.hadoop.util.GenericOptionsParser;
14. 
15.public class WordCount {
16.public WordCount() {
17.}
18. 
19.public static void main(String[] args) throws Exception {
20.Configuration conf = new Configuration();
21.String[] otherArgs = (new GenericOptionsParser(conf, args)).getRemainingArgs();
22.if(otherArgs.length < 2) {
23.System.err.println("Usage: wordcount  [...] ");
24.System.exit(2);
25.}
26. 
27.Job job = Job.getInstance(conf, "word count");
28.job.setJarByClass(WordCount.class);
29.job.setMapperClass(WordCount.TokenizerMapper.class);
30.job.setCombinerClass(WordCount.IntSumReducer.class);
31.job.setReducerClass(WordCount.IntSumReducer.class);
32.job.setOutputKeyClass(Text.class);
33.job.setOutputValueClass(IntWritable.class);
34. 
35.for(int i = 0; i < otherArgs.length - 1; ++i) {
36.FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
37.}
38. 
39.FileOutputFormat.setOutputPath(job, new Path(otherArgs[otherArgs.length - 1]));
40.System.exit(job.waitForCompletion(true)?0:1);
41.}
42. 
43.public static class IntSumReducer extends Reducer {
44.private IntWritable result = new IntWritable();
45. 
46.public IntSumReducer() {
47.}
48. 
49.public void reduce(Text key, Iterable values, Reducer.Context context) throws IOException, InterruptedException {
50.int sum = 0;
51. 
52.IntWritable val;
53.for(Iterator i$ = values.iterator(); i$.hasNext(); sum += val.get()) {
54.val = (IntWritable)i$.next();
55.}
56. 
57.this.result.set(sum);
58.context.write(key, this.result);
59.}
60.}
61. 
62.public static class TokenizerMapper extends Mapper {
63.private static final IntWritable one = new IntWritable(1);
64.private Text word = new Text();
65. 
66.public TokenizerMapper() {
67.}
68. 
69.public void map(Object key, Text value, Mapper.Context context) throws IOException, InterruptedException {
70.StringTokenizer itr = new StringTokenizer(value.toString());
71. 
72.while(itr.hasMoreTokens()) {
73.this.word.set(itr.nextToken());
74.context.write(this.word, one);
75.}
76. 
77.}
78.}
79.}

代码运行后会弹出一个界面,直接点击OK即可,如下图所示:

代码如果运行成功,会出现一串红色代码,如下图所示:

将执行成功形成的一个运行程序,存放到下边这个路径下,如下图所示:

7.##再打开终端,输入命令,利用刚才的运行程序来执行10000字的英语文章

:./bin/hadoop jar ./myapp/WordCount.jar input output    //前提是在/usr/local/hadoop路径

查询运行程序统计出来的每个单词出现的次数,如下图所示:

将统计好的单词次数导出成文件,命令如下图所示:

:./binhdfs dfs -get output ./output     //前提是在/usr/local/hadoop路径

以上就是使用开发工具运行统计单词出现次数的过程。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了