Spark中的wordCount程序实现

import  org.apache.spark.SparkConf;
import  org.apache.spark.api.java.JavaPairRDD;
import  org.apache.spark.api.java.JavaRDD;
import  org.apache.spark.api.java.JavaSparkContext;
import  org.apache.spark.api.java.function.FlatMapFunction;
import  org.apache.spark.api.java.function.PairFunction;
import  scala.Tuple2;
 
import  java.util.Arrays;
import  java.util.List;
 
public  class  Main {
 
     public  static  void  main(String[] args) {
         //设置本地模式,不提交到集群运行,运行的名称为myapp
         SparkConf conf =  new  SparkConf().setMaster( "local" ).setAppName( "my app" );
         JavaSparkContext sc =  new  JavaSparkContext(conf);
         //设置文件的输入路径为/ok/test
         String inputFile= "/ok/test" ;
         JavaRDD<String> input = sc.textFile(inputFile);
         //设置词之间以 “ ”间隔
         JavaRDD<String> words = input.flatMap(
                 new  FlatMapFunction<String, String>() {
                     public  Iterable<String> call(String s)  throws  Exception {
                         return  Arrays.asList(s.split( " " ));
                     }
                 }
         );
         //设置每遇到一个单词,相应的计数加1
         JavaPairRDD<String, Integer> counts = words.mapToPair(
                 new  PairFunction<String, String, Integer>() {
                     public  Tuple2<String, Integer> call(String s)  throws  Exception {
                         return  new  Tuple2(s,  1 );
                     }
                 }
 
                 //设置遇到相同的词汇,将计数相加
         ).reduceByKey( new  org.apache.spark.api.java.function.Function2<Integer, Integer, Integer>() {
             public  Integer call(Integer integer, Integer integer2)  throws  Exception {
                 return  integer+integer2;
             }
         });
         //用列表来存储所有的单词-计数 pair
         List<Tuple2<String,Integer>> output =counts.collect();
         //遍历此链表
         for (Tuple2 tuple: output){
             System.out.println(tuple._1+ ": " +tuple._2);
         }
         //关闭集群
         sc.stop();
     }
}
输出:
689069-20151130182524890-1438204882.png




转载于:https://www.cnblogs.com/zhoudayang/p/5008005.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值