一起学Hadoop——使用IDEA编写第一个MapReduce程序(Java和Python)

 上一篇我们学习了MapReduce的原理,今天我们使用代码来加深对MapReduce原理的理解。

wordcount是Hadoop入门的经典例子,我们也不能免俗,也使用这个例子作为学习Hadoop的第一个程序。本文将介绍使用java和python编写第一个MapReduce程序。

本文使用Idea2018开发工具开发第一个Hadoop程序。使用的编程语言是Java。

打开idea,新建一个工程,如下图所示:

在弹出新建工程的界面选择Java,接着选择SDK,一般默认即可,点击“Next”按钮,如下图:

 

在弹出的选择创建项目的模板页面,不做任何操作,直接点击“Next”按钮。

输入项目名称,点击Finish,就完成了创建新项目的工作,我们的项目名称为:WordCount。如下图所示:

 

添加依赖jar包,和Eclipse一样,要给项目添加相关依赖包,否则会出错。

点击Idea的File菜单,然后点击“Project Structure”菜单,如下图所示:

 

依次点击Modules和Dependencies,然后选择“+”的符号,如下图所示:

 

 

选择hadoop的包,我用得是hadoop2.6.1。把下面的依赖包都加入到工程中,否则会出现某个类找不到的错误。

(1)”/usr/local/hadoop/share/hadoop/common”目录下的hadoop-common-2.6.1.jar和haoop-nfs-2.6.1.jar;

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

(3)“/usr/local/hadoop/share/hadoop/hdfs”目录下的haoop-hdfs-2.6.1.jar和haoop-hdfs-nfs-2.7.1.jar;

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

 

工程已经创建好,我们开始编写Map类、Reduce类和运行MapReduce的入口类:

 JAVA编写MarReduce代码

Map类如下:

复制代码
 1 import org.apache.hadoop.io.IntWritable;  2  3 import org.apache.hadoop.io.LongWritable;  4  5 import org.apache.hadoop.io.Text;  6  7 import org.apache.hadoop.mapreduce.Mapper;  8  9 import java.io.IOException; 10 11 12 public class WordcountMap extends Mapper<LongWritable,Text,Text,IntWritable> { 13         public void map(LongWritable key,Text value,Context context)throws IOException,InterruptedException{ 14 15         String line = value.toString();//读取一行数据16 17         String str[] = line.split("");//因为英文字母是以“ ”为间隔的,因此使用“ ”分隔符将一行数据切成多个单词并存在数组中18 19         for(String s :str){//循环迭代字符串,将一个单词变成<key,value>形式,及<"hello",1>20             context.write(new Text(s),new IntWritable(1)); 
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信