项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1.前言

spark中两个rdd,经常需要做交集,差集,并集等操作。好比任何一门编程语言中两个集合,交并差也是常见的需求。现在我们看看在spark中怎么实现两个rdd的这种操作。
为了方便看到结果,在spark shell中测试如下代码。

先生成两个rdd

scala> val rdd1 = sc.parallelize(List("a", "b","c"))
rdd1: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[5] at parallelize at <console>:27scala> val rdd2 = sc.parallelize(List("e", "d","c"))
rdd2: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[6] at parallelize at <console>:27

生成了两个rdd,分别为rdd1与rdd2,然后开始测试。

2.求并集,union操作

如果是要求并集,用union操作即可。

scala> rdd1.union(rdd2).collect
...
res5: Array[String] = Array(a, b, c, e, d, c)

可以看出,union的结果是没有去重的,就是将rdd1与rdd2的元素放一块。
有的小伙伴说我就要去重,那怎么办。很简单,distinct嘛。

scala> rdd1.union(rdd2).distinct.collect
...
res6: Array[String] = Array(a, b, c, d, e)

3.求交集,intersection操作

求两个交集也是常见的需求。很简单,用intersection操作就可以了。

scala> rdd1.intersection(rdd2).collect
...
res7: Array[String] = Array(c)scala> rdd2.intersection(rdd1).collect
...
res9: Array[String] = Array(c)

4.求差集,subtract

subtract的方法原型为:

def subtract(other: RDD[T]): RDD[T]

该函数类似于intersection,返回在RDD中出现,并且不在otherRDD中出现的元素,不去重。

scala> rdd1.subtract(rdd2).collect
...
res10: Array[String] = Array(a, b)scala> rdd2.subtract(rdd1).collect
...
res11: Array[String] = Array(d, e)

这几个方法都很实用,使用起来也简单快捷,希望能对大家有所帮助。

spark 两个rdd求交集,差集,并集相关推荐

  1. python中交集并集用什么符号表示_Python实现两个list求交集,并集,差集的方法示例...

    本文实例讲述了Python实现两个list求交集,并集,差集的方法.分享给大家供大家参考,具体如下: 在python中,数组可以用list来表示.如果有两个数组,分别要求交集,并集与差集,怎么实现比较 ...

  2. Linux 两个文件求交集、并集、差集

    Linux 两个文件求交集.并集.差集 原文地址: Linux 两个文件求交集.并集.差集 (https://www.cnblogs.com/molong1208/p/5358509.html) 一. ...

  3. 【mysql】mysql获取两个集合的交集/差集/并集

    mysql的常见场景,获取两个数据集的交集和差集 步骤 两个集合的结构要一致,对应的字段数,字段类型 将两个集合用 UNION ALL 关键字合并,这里的结果是有重复的所有集 将上面的所有集 GROU ...

  4. javascript 数组求交集/差集/并集/过滤重复

    最近在小一个小程序项目,突然发现 javscript 对数组支持不是很好,连这些基本的功能,都还要自己封装.网上查了下,再结合自己的想法,封装了一下,代码如下. //数组交集 Array.protot ...

  5. Linux中uniq去重以及对两个文件取交集,并集,差集

    uniq 前言 很多时候我们需要对数据去重,不管是少量数据还是大量数据,写代码进行去重终究没有使用系统功能直接操作文件方便,所以本文就介绍了一些关于uniq的使用方法 uniq单独使用 uniq配合s ...

  6. C/C++ 求两个集合的交集、并集、差集

    推荐阅读:Python基础自学实用笔记(总和篇)-By Ryan_3610 1.题目:求两个集合的交集.并集.差集 1.1代码 #include <iostream> #include & ...

  7. Python求两个list的交集、并集、差(补)集、对称差集的方法

    Python求两个list的交集.并集.差(补)集.对称差集的方法 摘要 1. 总结 1.1 求两个list的交.并.差(补).对称差集 - 使用set集合运算符 1.2 求两个list的交.并.差( ...

  8. (03)两个模型的交集、并集、差集

    前言 在做一碰撞检测时,犹豫一直无法实现,就行想到直接对两个模型求交集,如果交集部分为空,就说明其没有相交,于是使用了下面的方法,求模型的交集.(后来由于在不相交时一直有报错误,但在后来的研究中发现及 ...

  9. python中对两个 list 求交集,并集和差集

    python中对两个 list 求交集,并集和差集: 1.首先是较为浅白的做法: >>> a=[1,2,3,4,5,6,7,8,9,10] >>> b=[1,2,3 ...

  10. java集合操作-----求两个集合的交集和并集

    java求两个集合的交集和并集 java如何求两个集合的交集和并集呢??其实java的API中已经封装了方法.今天写个简单的例子测试一下:(例子中以java.util.LinkedList为例) 求连 ...

最新文章

  1. Anaconda3 离线安装 Django-3.2.7 及依赖项setuptools、sqlparse 、asgiref、typing_extensions等模块
  2. MAC复用和逻辑信道优先级
  3. python object的实例是什么_Python-向现有对象实例添加方法
  4. windows10详细配置pcl-1.8.1
  5. pat 乙级 1010 一元多项式求导(C++)
  6. 同步的概念(python 版)
  7. ireport在springboot中中文不显示解决
  8. UVA-572-搜索基础题
  9. linux程序网络验证,【redhat5.5】linux的LDAP认证服务器的配置及客户端pam网络验证实例...
  10. 如何设置固定宽度 td ?
  11. 张先生是什么意思_她为家付出几十年,只因拿六千礼金,遭儿媳怒怼:什么钱你都敢拿?...
  12. php报错集合,centos7安装php5.6报错集合
  13. SQL server增删改查
  14. 如何将mpg格式转换为mp4格式?
  15. GPS: 经纬度概念
  16. 液压传动与气动技术【2】
  17. JZ2440.jflash配置
  18. 批量转换图片文件格式(将JPEG、PNG转成JPG)
  19. 小仙女手账的神仙句子
  20. python+matplotlib绘制南丁格尔玫瑰图

热门文章

  1. chaos-monkey-spring-boot小试牛刀
  2. 不创建临时变量,交换两整数的值
  3. 关于Executors.newFixedThreadPool何时创建新线程
  4. Windows任务管理器
  5. 使用wget抓取网站资源
  6. android ssl-dl
  7. IDEA Unable to import maven project: See logs for details
  8. Red Hat Enterprise Linux 7.5安装盘内容做本地YUM源
  9. java初学者,应该怎么去学习?
  10. 是否采用SD-WAN?你需要先考虑以下问题