IDEA + Hadoop工程入门实例 ——Word Count编程

一、       启动IDEA

进入/home/iespark/hadoop_program_files/idea-IC-143.1184.17/bin,执行“./idea.sh”。

二、       新建工程

点击File->new->project,弹出对话框,选择Java->Kotlin(Java)(如图1.1),点击next,输入项目名,项目保存路径,点击Finish,NewWindow新工程至此创建完成。


1.1创建新工程

三、       导入JAR包

点击File->ProjectStructure,弹出对话框(如图2.1)。选择Libraries(与eclipse的lib一个道理),点击“+”号,选择JAVA,在弹出的窗口中选择需要导入的JAR包的位置(如图2.2),此例中只需导入conmmon(3个jar)和mapreduce张的jar包即可(在hadoop-2.6.2/share/Hadoop/)。

2.1 创建Lib文件

图2.2 导入Jar包

四、       编写程序

编写WordCount程序,该程序分为三个部分,Map类、Reduce类以及Main。以下是个各类的具体代码

注意:修改代码之后,一定要点击saveall保存(笔者未知原因)

Map类

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

import java.util.StringTokenizer;

 

/**

 * Created by iespark on 2/26/16.

 */

public class WcMapper extends Mapper<LongWritable,Text,Text,IntWritable>{

    @Override

    protected void map(LongWritable key, Text value, Context context)

            throws IOException, InterruptedException {

// IntWritable one=new IntWritable(1);

        String line=value.toString();

        StringTokenizer st=new StringTokenizer(line);

//StringTokenizer "kongge"

        while (st.hasMoreTokens()){

            String word= st.nextToken();

            context.write(new Text(word),new IntWritable(1));   //output

        }

    }

}

Reduce类

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

 

/**

 * Created by iespark on 2/26/16.

 */

public class McReducer extends Reducer<Text,IntWritable,Text,IntWritable> {

    @Override

    protected void reduce(Text key, Iterable<IntWritable> iterable, Context context) throws IOException, InterruptedException {

        int sum=0;

        for (IntWritable i:iterable){

            sum=sum+i.get();

        }

        context.write(key,new IntWritable(sum));

    }

}

Main

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

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.output.FileOutputFormat;

 

/**

 * Created by iespark on 2/26/16.

 */

public class JobRun {

    public static void main(String[] args){

        Configuration conf=new Configuration();

        try{

            Job job = Job.getInstance(conf, "word count");

//Configuration conf, String jobName

            job.setJarByClass(JobRun.class);

            job.setMapperClass(WcMapper.class);

            job.setReducerClass(McReducer.class);

            job.setOutputKeyClass(Text.class);

            job.setOutputValueClass(IntWritable.class);

 

            FileInputFormat.addInputPath(job,new Path("/input/wc"));

            FileSystem fs= FileSystem.get(conf);

            Path op1=new Path("hdfs://219.226.86.155:9000//output/wc");

            if(fs.exists(op1)){

                fs.delete(op1, true);

                System.out.println("存在此输出路径,已删除!!!");

            }

            FileOutputFormat.setOutputPath(job,op1);

            System.exit(job.waitForCompletion(true)?0:1);

        }catch (Exception e){

            e.printStackTrace();

        }

    }

}

 

























五、       导出JAR包

点击File->ProjectStructure,弹出对话框(如图4.1)。选择Artifacts,点击“+”号,选择JAR->Frommodules with dependencies…,在弹出的窗口中选择Main Class的位置(如图4.2),选择JabRun,选择导出JAR包的位置,一路OK即可完成。

4.1 导出jar

4.2 导出完成

这里需要注意,导出之后的JAR包还不能直接运行,需要经过buildArtifacts过程。如图4.3,点击菜单栏Build->BuildArtifacts,此时JAR包才算导出成功。

图4.3 BuildArtifacts

六、       运行

6.1 导入输入文件

首先在本地创建好原始输入文件(命名为word_count),之后在HDFS上新建“/input”目录,将本地的文件上传到HDFS的/input上,并命名为wc。

[iespark@hadoopadmin ~]$ hadoop dfs -mkdir /input

[iespark@hadoopadmin zzh]$ hadoop dfs – put ./word_count /input/wc

6.2 执行JAR文件

到导出的JAR包所在目录执行JAR包,具体命令如下:

[iespark@hadoopadmin Bymyself_jar]$ hadoop jar Bymyself.jar

6.3 查看结果

结果保存在HDFS上,可通过网页访问(http://namenode-name:50070)也可以通过如下命令访问。

[iespark@hadoopadmin ~]$ hadoop dfs –ls /oupput/wc

Found 2 items

-rw-r--r-- 2 iespark supergroup  0 2016-04-25 16:49 /output/wc/_SUCCESS

-rw-r--r-- 2 iespark supergroup 28 2016-04-25 16:49 /output/wc/part-r-00000

[iespark@hadoopadmin ~]$ hadoop dfs –text /output/wc/part-r-00000


  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值