spark join操作

// 使用join算子关联两个RDD
        // join以后,还是会根据key进行join,并返回JavaPairRDD
        // 但是JavaPairRDD的第一个泛型类型,之前两个JavaPairRDD的key的类型,因为是通过key进行join的
        // 第二个泛型类型,是Tuple2<v1, v2>的类型,Tuple2的两个泛型分别为原始RDD的value的类型
        // join,就返回的RDD的每一个元素,就是通过key join上的一个pair


public static void myJoin(){
        SparkConf conf = new SparkConf()
        .setAppName("join")  
        .setMaster("local");
      // 创建JavaSparkContext
      JavaSparkContext sc = new JavaSparkContext(conf);
      List<Tuple2<Integer, String>> studentList = Arrays.asList(
                new Tuple2<Integer, String>(1, "leo"),
                new Tuple2<Integer, String>(2, "jack"),
                new Tuple2<Integer, String>(3, "tom"));
        
        List<Tuple2<Integer, Integer>> scoreList = Arrays.asList(
                new Tuple2<Integer, Integer>(2, 90),
                new Tuple2<Integer, Integer>(1, 100),
                new Tuple2<Integer, Integer>(3, 60));
        
        JavaPairRDD<Integer, String> students = sc.parallelizePairs(studentList);
        JavaPairRDD<Integer, Integer> scores = sc.parallelizePairs(scoreList);
        JavaPairRDD<Integer, Tuple2<String, Integer>> studentScores = students.join(scores);
        
studentScores.foreach(
                
                new VoidFunction<Tuple2<Integer,Tuple2<String,Integer>>>() {

                    private static final long serialVersionUID = 1L;
        
                    @Override
                    public void call(Tuple2<Integer, Tuple2<String, Integer>> t)
                            throws Exception {
                        System.out.println("student id: " + t._1);  
                        System.out.println("student name: " + t._2._1);  
                        System.out.println("student score: " + t._2._2);
                        System.out.println("===============================");   
                    }
                    
                });
        sc.close();
        
        
      

        
    }


运算结果:

student id: 1
student name: leo
student score: 100
===============================
student id: 3
student name: tom
student score: 60
===============================
student id: 2
student name: jack
student score: 90
===============================


如果把其中一个删除了会有什么结果呢?

可以看到只是返回找到jion的结果:

student id: 3
student name: tom
student score: 60
===============================
student id: 2
student name: jack
student score: 90
===============================

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值