Spark双集合(RDD)之间的操作-差集,交集,合集,笛卡尔积等

本文介绍了如何使用Apache Spark进行数据处理,通过实例展示了RDD的并集、差集、交集和笛卡尔积操作,包括`union`、`subtract`、`intersection`和`cartesian`的用法,并以Scala代码呈现,适合初学者理解Spark的集合运算原理。
def main(args:Array[String]){
        // 1. 创建 SparkConf对象, 并设置 App名字
        val conf:SparkConf = new SparkConf().setMaster("local[*]").setAppName("WordCount");
        // 2. 创建SparkContext对象
        val sc = new SparkContext(conf);
        // 3. 使用sc创建RDD并执行操作
        val res1 = sc.parallelize(Array(1,2,3,4),2);
        val res2 = sc.parallelize(Array(1,1,3,5),2);
        //1.
        //union :返回这个RDD和另一个RDD的并集。任何相同的元素将出现多次(可以使用' .distinct() '消除重复)。
        //union结果 1 2 3 4 1 1 3 5
        //var rdd = res1.union(res2).collect();
        
        //2.
        //subtract:返回一个RDD,其中包含来自“this(res1)”而不在“other(res2)”中的元素
        //使用' this(res1) ' partitioner/分区大小,即使' other(res2) '很大,得到的RDD将是<= us(res1)。
        //subtract:结果 2 4
        //var rdd = res1.subtract(res2).collect();
        
        //3.
        //intersection:返回这个RDD和另一个RDD的交集。即使输入RDDs包含重复元素,输出也不会包含重复元素。
        //intersection:结果 1 3
        //var rdd = res1.intersection(res2).collect();
        
        //4.
        //cartesian:返回这个RDD和另一个RDD的笛卡尔积,也就是所有对的RDD元素(a, b),其中a在this(res1)中,b在other(res2)中。
        //cartesian结果:(1,1)(1,1)(2,1)(2,1)(1,3)(1,5)(2,3)(2,5)(3,1)(3,1)(4,1)(4,1)(3,3)(3,5)(4,3)(4,5)
        //var rdd = res1.cartesian(res2).collect();
        
        //5.
        //zip:将这个RDD与另一个RDD压缩,返回每个RDD中的第一个元素、每个RDD中的第二个元素的键值对,以此类推。
        //要求这两个RDDs有*相同数量的分区,每个分区中相同数量的元素。类似还有zipWithIndex, zipPartitions
        //zip结果:(1,1)(2,1)(3,3)(4,5)
        var rdd = res1.zip(res2).collect();
        //4.循环打印
        rdd.foreach(println);
        //5.停止
        sc.stop();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里藍天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值