spark wordCount用java代码实现

前言:
java 代码编写spark 的wordCount 使用的方法和scala 基本相同
除了生成(单词,1)时候使用的是mapToPair() 方法,代替了map()
因为在java中生成kv类型RDD 需要使用xxToPair 方法
而且java 中没有sortBy 中有soarBykey

public class SparkWc {
    public static void main(String[] args) {

        //设置运行模式 运行模式总共有四种 local standalone yarn mesos
        //webUi显示 application 名称
        //设置集群计算资源
        SparkConf conf = new SparkConf().setAppName("JavaWc").setMaster("local").set("spark.executor.memory", "1g");

        //远程链接hadoop
        Properties properties = System.getProperties();
        properties.setProperty("HADOOP_USER_NAME", "root");

        //spark 的一个core 只能跑一个线程***
        // 四核八线程可以给spark提供8个核
        //SparkContext sc = new SparkContext(conf);  java 使用的是javaSparkContext scala 使用的是SparkContext

        JavaSparkContext sc = new JavaSparkContext(conf);

        //Rdd理解为数据集理解为一个数组
        // textFile读取方式就是一行作为一个元素
        JavaRDD<String> lines = sc.textFile("hdfs://hadoop-101:9000/a.txt");


        //一行出来n个单词 一对多UDTF     类似explode() lateral view()
        JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
            @Override
            public Iterator<String> call(String s) throws Exception {
                return Arrays.asList(s.split(" ")).iterator();
            }
        });


        //在java中返回元祖类型Rdd要使用XXToPair这类型方法
        JavaPairRDD<String, Integer> pairRDD = words.mapToPair(new PairFunction<String, String, Integer>() {
            @Override
            public Tuple2<String, Integer> call(String s) throws Exception {
                return new Tuple2<String, Integer>(s, 1);
            }
        });

        JavaPairRDD<String, Integer> reduced = pairRDD.reduceByKey(new Function2<Integer, Integer, Integer>() {
            @Override
            public Integer call(Integer v1, Integer v2) throws Exception {
                return v1 + v2;
            }
        });

        reduced.foreach(new VoidFunction<Tuple2<String, Integer>>() {
            @Override
            public void call(Tuple2<String, Integer> t2) throws Exception {
                println(t2);
            }
        });


    }
}
发布了53 篇原创文章 · 获赞 4 · 访问量 973

猜你喜欢

转载自blog.csdn.net/weixin_43548518/article/details/103460036