未加星标

Hadoop学习(二) 第一个小练习

字体大小 | |
[大数据资讯 所属分类 大数据资讯 | 发布者 店小二05 | 时间 2018 | 作者 红领巾 ] 0人收藏点击收藏

使用eclipse编写代码,分析一个text文件中每个单词的出现的次数

eclipse下载地址:http://www.eclipse.org/downloads/packages/release/Luna/SR2

如果出现如下报错:

Java

RunTime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse.

No java virtual machine was found after searching the following locations:…

意思没有配置JDK的路径,那就配置一下,在终端进入你的eclipse目录,然后输入:

mkdir jre

cd jre

ln -s 你的JDK目录/bin bin 创建jdk的软连接

ln -s /home/chs/java/jdk1.8.0_172/bin

在hadoop创建一个in目录

hadoop fs -mkdir /in

本地创建一个words文件

touch words
vim words 输入一些分析的单词
比如输入:
hadoop spark word space
hdfs hadoop word mapper
reduce hello hadoop hello
word hai hadoop space
total google
保存退出

把words文件传到 in 目录下

hadoop fs -put words /in

使用eclipse编写代码创建一个类WordCount

Hadoop学习(二) 第一个小练习

导入hadoop的jar包

右键项目 》properties》java Build Path》libraries》Add External JARS》在hadoop解压目录总share文件夹中的hadoop文件夹中。导入所需要的jar包也可都导入

package hdfs;
import java.io.IOException;
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 void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
if(args.length!=2){System.exit(0);
}
//
Configuration con = new Configuration();
@SuppressWarnings("deprecation")
Job job = new Job(con);
job.setJarByClass(WordCount.class);
//设置输入路径
FileInputFormat.setInputPaths(job, new Path(args[0]));
//设置输出路径
FileOutputFormat.setOutputPath(job, new Path(args[1]));
//设置实现map函数的类
job.setMapperClass(MyMap.class);
//设置实现reduce函数的类
job.setReducerClass(MyReduce.class);
//设置map阶段产生的key和value的类型
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
//设置reduce阶段产生的key和value的类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
//提交job
job.waitForCompletion(true);
}
public static class MyMap extends Mapper<LongWritable, Text, Text, IntWritable>{
protected void map(LongWritable key, Text value, org.apache.hadoop.mapreduce.Mapper<LongWritable,Text,Text,IntWritable>.Context context) throws java.io.IOException ,InterruptedException {//在此处写map代码String[] lines = value.toString().split(" ");for (String word : lines) { context.write(new Text(word), new IntWritable(1));}
};
}
public static class MyReduce extends Reducer<Text, IntWritable, Text, IntWritable>{protected void reduce(Text k2, java.lang.Iterable<IntWritable> v2s, org.apache.hadoop.mapreduce.Reducer<Text,IntWritable,Text,IntWritable>.Context context) throws java.io.IOException ,InterruptedException { //在此处写reduce代码 int count=0; for (IntWritable cn : v2s) { count=count+cn.get(); } context.write(k2, new IntWritable(count));};
}
}

自己建个文件夹保存jar包

使用eclipse把项目打成jar包

项目上右键选择Export

Hadoop学习(二) 第一个小练习

选择next

Hadoop学习(二) 第一个小练习

这里jar保存的路径的文件夹其他用户组需要有写的权限。然后点击next

Hadoop学习(二) 第一个小练习

这里选择main函数所在的包名和类名,之后点击完成

执行jar,进入到jar存放的文件夹

hadoop jar fs.jar hdfs.WordCount /in/words /out

hadoop jar: 执行jar 的命令

fs.jar: 打好的jar的名字

hdfs.WordCount: main函数所在的类

/in/words: hdfs上的输入路径

/out: hdfs上的输出路径

执行完后hdfs根路径下会出现一个out目录查看改目录

hadoop fs -ls /out

可以看到

-rw-r--r-- 1 root supergroup 0 2018-05-14 14:08 /out/_SUCCESS
-rw-r--r-- 1 root supergroup 88 2018-05-14 14:08 /out/part-r-00000

查看part-r-00000

hadoop fs -cat /out/part-r-00000

可以看到

google 1
hadoop 4
hai 1
hdfs 1
hello 2
mapper 1
reduce 1
space 2
spark 1
total 1
word 3

每个词有多少就分析出来了。


Hadoop学习(二) 第一个小练习
主题: HadoopJavaWordSUUC
tags: hadoop,Text,org,jar,IntWritable,apache,job,import,class,java,fs,new,mapreduce,io
分页:12
转载请注明
本文标题:Hadoop学习(二) 第一个小练习
本站链接:http://www.codesec.net/view/576544.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 大数据资讯 | 评论(0) | 阅读(126)