zoukankan      html  css  js  c++  java
  • 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();
        }
    }
    输出:




    我的github: https://github.com/zhoudayang
  • 相关阅读:
    A02 React+Antdesign 创建新项目
    B02 Vue+Element 创建新项目
    B01 Vue+Element 开发环境搭建
    A01 React+Antdesign 开发环境准备
    批量处理TXT转csv
    pyinstall python文件打包成二进制exe文件
    vue前端与django后端数据交互
    页面自适应
    ETL-kettle通过java代码传递参数,调用job调用转换
    ETL-kettle基本操作,表的输入输出
  • 原文地址:https://www.cnblogs.com/zhoudayang/p/5008005.html
Copyright © 2011-2022 走看看