spark做交集
去重
union
最简单的集合操作是 union(other),它会返回一个包含两个 RDD 中所有元素的 RDD。
与数学中的 union() 操作不同的是,如果输入的 RDD 中有重复数据,Spark 的 union() 操作也会包含这些重复数据
(如有必要,我们可以通过 distinct() 实现相同的效果)。
distinct() 操作的开销很大,因为它需要将所有数据通过网络进行混洗(shuffle),以确保每个元素都只有一份
共同元素
intersection(other) 方法,只返回两个 RDD 中都有的元素。
intersection()
在运行时也会去掉所有重复的元素(单个 RDD 内的重复元素也会一起移除)。尽管intersection() 与 union() 的概念相似,
intersection() 的性能却要差很多,因为它需要通过网络混洗数据来发现共有的元素。
subtract(other) 函数接收另一个 RDD 作为参数,返回一个由只存在于第一个 RDD 中而不存在于第二个 RDD 中的所有元素组成的 RDD。和intersection() 一样,它也需要数据混洗。
笛卡儿积开销巨大 cartesian(other)
我们也可以计算两个 RDD 的笛卡儿积,cartesian(other) 转化操作会返回