spark 两个rdd求交集,差集,并集
项目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求交集,差集,并集相关推荐
- python中交集并集用什么符号表示_Python实现两个list求交集,并集,差集的方法示例...
本文实例讲述了Python实现两个list求交集,并集,差集的方法.分享给大家供大家参考,具体如下: 在python中,数组可以用list来表示.如果有两个数组,分别要求交集,并集与差集,怎么实现比较 ...
- Linux 两个文件求交集、并集、差集
Linux 两个文件求交集.并集.差集 原文地址: Linux 两个文件求交集.并集.差集 (https://www.cnblogs.com/molong1208/p/5358509.html) 一. ...
- 【mysql】mysql获取两个集合的交集/差集/并集
mysql的常见场景,获取两个数据集的交集和差集 步骤 两个集合的结构要一致,对应的字段数,字段类型 将两个集合用 UNION ALL 关键字合并,这里的结果是有重复的所有集 将上面的所有集 GROU ...
- javascript 数组求交集/差集/并集/过滤重复
最近在小一个小程序项目,突然发现 javscript 对数组支持不是很好,连这些基本的功能,都还要自己封装.网上查了下,再结合自己的想法,封装了一下,代码如下. //数组交集 Array.protot ...
- Linux中uniq去重以及对两个文件取交集,并集,差集
uniq 前言 很多时候我们需要对数据去重,不管是少量数据还是大量数据,写代码进行去重终究没有使用系统功能直接操作文件方便,所以本文就介绍了一些关于uniq的使用方法 uniq单独使用 uniq配合s ...
- C/C++ 求两个集合的交集、并集、差集
推荐阅读:Python基础自学实用笔记(总和篇)-By Ryan_3610 1.题目:求两个集合的交集.并集.差集 1.1代码 #include <iostream> #include & ...
- Python求两个list的交集、并集、差(补)集、对称差集的方法
Python求两个list的交集.并集.差(补)集.对称差集的方法 摘要 1. 总结 1.1 求两个list的交.并.差(补).对称差集 - 使用set集合运算符 1.2 求两个list的交.并.差( ...
- (03)两个模型的交集、并集、差集
前言 在做一碰撞检测时,犹豫一直无法实现,就行想到直接对两个模型求交集,如果交集部分为空,就说明其没有相交,于是使用了下面的方法,求模型的交集.(后来由于在不相交时一直有报错误,但在后来的研究中发现及 ...
- python中对两个 list 求交集,并集和差集
python中对两个 list 求交集,并集和差集: 1.首先是较为浅白的做法: >>> a=[1,2,3,4,5,6,7,8,9,10] >>> b=[1,2,3 ...
- java集合操作-----求两个集合的交集和并集
java求两个集合的交集和并集 java如何求两个集合的交集和并集呢??其实java的API中已经封装了方法.今天写个简单的例子测试一下:(例子中以java.util.LinkedList为例) 求连 ...
最新文章
- Anaconda3 离线安装 Django-3.2.7 及依赖项setuptools、sqlparse 、asgiref、typing_extensions等模块
- MAC复用和逻辑信道优先级
- python object的实例是什么_Python-向现有对象实例添加方法
- windows10详细配置pcl-1.8.1
- pat 乙级 1010 一元多项式求导(C++)
- 同步的概念(python 版)
- ireport在springboot中中文不显示解决
- UVA-572-搜索基础题
- linux程序网络验证,【redhat5.5】linux的LDAP认证服务器的配置及客户端pam网络验证实例...
- 如何设置固定宽度 td ?
- 张先生是什么意思_她为家付出几十年,只因拿六千礼金,遭儿媳怒怼:什么钱你都敢拿?...
- php报错集合,centos7安装php5.6报错集合
- SQL server增删改查
- 如何将mpg格式转换为mp4格式?
- GPS: 经纬度概念
- 液压传动与气动技术【2】
- JZ2440.jflash配置
- 批量转换图片文件格式(将JPEG、PNG转成JPG)
- 小仙女手账的神仙句子
- python+matplotlib绘制南丁格尔玫瑰图