头歌RDD的创建 -Java

第1关:集合并行化创建RDD

代码

package step1;

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 scala.Tuple2;

import java.util.*;

public class JStudent {
    public static void main(String[] args) {
        SparkConf conf = new SparkConf().setMaster("local").setAppName("JStudent");
        JavaSparkContext sc = new JavaSparkContext(conf);
        List<Tuple2<String,Integer>> list = Arrays.asList(
                new Tuple2("bj",88),new Tuple2("sh",67),new Tuple2("gz",92),
                new Tuple2("bj",94),new Tuple2("sh",85),new Tuple2("gz",95),
                new Tuple2("bj",72),new Tuple2("sh",69),new Tuple2("gz",98));
        /********** Begin **********/

        //第一步:创建RDD
       JavaPairRDD<String, Integer> listRDD = sc.parallelizePairs(list);

        //第二步:把相同key的进行聚合
       List<Tuple2<String, Integer>> result = listRDD.reduceByKey((x, y) -> x + y).collect();

        //第三步:输出
        for(Tuple2 s:result)
        {
            System.out.println(s);
        }
        /********** End **********/

        sc.stop();
    }
}

第2关:读取外部数据集创建RDD

代码

package step2;

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 scala.Tuple2;

import java.util.Arrays;
import java.util.List;

public class JTeachers {
    public static void main(String[] args) {
        SparkConf conf = new SparkConf().setMaster("local").setAppName("JTeachers");
        JavaSparkContext sc = new JavaSparkContext(conf);
        String dataFile = "file:///root/step2_files";
        /********** Begin **********/

        //第一步:以外部文件方式创建RDD
       JavaRDD<String> rdd = sc.textFile("file:///root/step2_files");//文件路径
        //第二步:将文件中每行的数据切分,得到自己想要的返回值
       JavaPairRDD<String,Integer> listRDD = rdd.mapToPair(
           x ->{
               String s=x.split(",")[1];
               return new Tuple2(s,1);
            }
           );
        //第三步:将相同的key进行聚合
        List<Tuple2<String, Integer>> result = listRDD.reduceByKey((x, y) -> x + y).collect();

        //第四步:将结果收集起来


        //第五步:输出
        for(Tuple2 s:result)
        {
            System.out.println(s);
        }
        /********** End **********/

        sc.stop();

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值