Intellij idea配置Spark开发环境,统计哈姆雷特词频(2)

idea 新建maven 项目

  1. 输入maven坐标


    maven 坐标
  2. 编辑maven文件


    Spark 体系

中间层Spark,即核心模块Spark Core,必须在maven中引用。
编译Spark还要声明java8编译工具。


        1.8
    
    
        
            org.apache.spark
            spark-core_2.11
            2.1.0
        
    
    
        
            
                maven-compiler-plugin
                
                    ${java.version}
                    ${java.version}
                
            
        
    

idea自动加载引用,在窗口左侧Project导航栏-->External Libraries中看到引用org.apache.spark中spark-core_2.11-2.1.0.jar文件。


idea Externel Libraries

注:Spark Streaming是流式计算框架、SparkSQL数据库工具、Mlib机器学习框架、GraphX图计算工具。

Java 8 lambda函数风格的wordCount

//定义单词总数累加器、和停用词累加器
Accumulator countTotal = jsc.accumulator(0);
Accumulator stopTotal = jsc.accumulator(0);
// 文件初始化RDD
JavaRDD stopword = jsc.textFile("data/text/stopword.txt");
JavaRDD rdd = jsc.textFile("data/text/Hamlet.txt");
// RDD 转换为List
List stopWordList = stopword.collect();
// Broadcast 广播变量,task共享executor的变量
Broadcast> broadcastedStopWordSet = jsc.broadcast(stopWordList);

rdd.filter(l->l.length()>0)
        .flatMap(l-> Arrays.asList(l.trim().split(" ")).iterator()) 
        // 将line分割展成词向量,词向量在连接,返回Rdd
        .map(v->v.replaceAll("['.,:;?!-]", "").toLowerCase())
        // 特殊字符处理, Rdd
        .filter(v->{
            boolean isStop = false;
            countTotal.add(1);
            if(broadcastedStopWordSet.value().contains(v)){
                stopTotal.add(1);
                isStop = true;
            }
            return !isStop;
        })
        //遍历总数计数、停用词计数,过滤停止词, Rdd
        .mapToPair(v-> new Tuple2<>(v,1))
        .reduceByKey((v1,v2)->v1+v2)
        //统计个数
        .mapToPair(p-> new Tuple2<>(p._2,p._1))
        .sortByKey(false)
        //排序
        .take(10).forEach(e->{
            System.out.println(e._2+":"+e._1);
        });
  1. 将line分割展成词向量,词向量连接,flatmap返回Rdd
  2. 特殊字符处理,返回 Rdd
  3. 遍历总数计数、停用词计数,过滤停止词, 返回Rdd
  4. Reduce Rdd,返回Rdd
  5. 排序 SortByKey,返回 Rdd

后期有更多案例介绍Java 8 lambda风格的RDD开发

你可能感兴趣的:(Intellij idea配置Spark开发环境,统计哈姆雷特词频(2))