• 92761

    文章

  • 775

    评论

  • 17

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

wordcount代码

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>

1.写出map类

public class WCMapper extends Mapper<LongWritable,Text,Text,LongWritable>{

    @Override
    protected void map(LongWritable key,Text value,Context context)throws IOException,InterruptedException{
        
        //value转换成string类型 返回字符串
        String line = value.toSting();
        //使用空格切分单词 返回字符数组
        String[] words = StringUtils.split(line," ");
        
        //遍历这个数组,按照特定格式输出key-value形式   key:单词  value:1
        for(String word : words){
            context.write(new Text(word),new LongWritable(1));            
        }
        LongWritable,Text,Text,LongWritable
        
    }
        


}

2.写出reduce类


public class WCReducer extends Reducer<Text,LongWritable,Text,LongWritable>{
    
    //框架在map处理完之后,将所有kv对缓存起来,进行分组,然后传递给<key,values{}>,调用一次reduce方法
    //<hello,{1,1,1,1,1,1.......}>
    @Override
    protected void reduce(Text key,Iterable<LongWriteable> values,Context context)throws IOException,InterruptedException{
        long count = 0;
        //遍历values的list,进行累加求和
        for(LongWriteable value:values){            
            count += value.get();            
        }
        //输出这个单词的统计结果
        context.write(key,new LongWritable(count));        
    }
        
}

 

3.job提交类

    //用来描述一个特定的作业,比如说
    //该job使用哪个类作为逻辑处理中的map,哪个作为reduce
    //指定需处理的数据的路径
    //指定输出结果路径
public class WCRunner{
    public static void main(String[] args){
        
        Context conf  = new Context();
        
        Job job = Job.getInstance(conf);
        
        //设置整个job所用的那些类在哪个jar包
        job.setJarByClass(WCRunner);
        
        //使用map、reduce的类
        job.setMapperClass(WCMapper.class);
        job.setReduceClass(WCReducer.class);
        
        //指定reduce的输出的kv类型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LongWritable.class);
        
        //指定map的输出的kv类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(LongWritable.class);
        
        //指定数据源路径
        FileInputFormat.setInputPaths(job,new Path("/wc/srcdata"));
        //指定结果输出路径
        FileOutputFormat.setOutputPath(job,new Path("/wc/output/"));
        
        //将job提交给集群
        job.waitForCompletion(true);                
    }
    
}

4打成jar包

5.hadoop上运行

 

 

 

 

 

 

 

 

 

 

 


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

欢迎来到梁钟霖个人博客网站。本个人博客网站提供最新的站长新闻,各种互联网资讯。 还提供个人博客模板,最新最全的java教程,java面试题。在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿大家一起进步!

转载原创文章请注明出处,转载至: 梁钟霖个人博客www.liangzl.com

0条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤
注册梁钟霖个人博客