Spark - RDD使用详解3(转换算子2:双Value类型)
作者:hangge | 2023-09-27 08:40
五、双 Value 类型的转换算子
1,intersection
(1)该函数对源 RDD 和参数 RDD 求交集后返回一个新的 RDD。
def intersection(other: RDD[T]): RDD[T]
(2)下面代码对两个 RDD 计算交集:
// 创建RDD val rdd1 = sc.makeRDD(List(1, 2, 3, 4, 5)) val rdd2 = sc.makeRDD(List(4, 5, 6, 7, 8)) // 计算交集 val rdd3 = rdd1.intersection(rdd2) // 打印数据 rdd3.collect().foreach(println)
(3)如果两个 RDD 的数据类型不一致,可以使用转换操作将它们转换为相同的数据类型,以便进行交集计算。
// 创建RDD val rdd1 = sc.makeRDD(List(1, 2, 3, 4, 5)) val rdd2 = sc.makeRDD(List("4", "5", "6", "7", "8")) // 将 RDD1 中的元素转换为字符串类型 val rdd1AsStrings = rdd1.map(_.toString) // 计算交集 val rdd3 = rdd1AsStrings.intersection(rdd2) // 打印数据 rdd3.collect().foreach(println)
2,union
(1)该函数对源 RDD 和参数 RDD 求并集后返回一个新的 RDD。
def union(other: RDD[T]): RDD[T]
(2)下面代码对两个 RDD 执行合并:
// 创建RDD val rdd1 = sc.makeRDD(List(3, 4, 5)) val rdd2 = sc.makeRDD(List(4, 5, 6)) // 执行合并 val rdd3 = rdd1.union(rdd2) // 打印数据 rdd3.collect().foreach(println)
3,subtract
(1)该函数用于计算两个数据集的差集,即返回存在于第一个数据集中但不存在于第二个数据集中的元素集合。
def subtract(other: RDD[T]): RDD[T]
(2)下面代码计算两个 RDD 的差集:
// 创建RDD val rdd1 = sc.makeRDD(List(1, 2, 3, 4, 5)) val rdd2 = sc.makeRDD(List(4, 5, 6, 7, 8)) // 计算差集 val rdd3 = rdd1.subtract(rdd2) // 打印数据 rdd3.collect().foreach(println)
4,zip
(1)该函数用于将两个数据集按照元素位置进行配对,返回一个新的键值对数据集。
注意:zip() 函数要求两个数据集的元素数量必须相同、数据类型必须相同、分区数量也要相同。
def zip[U: ClassTag](other: RDD[U]): RDD[(T, U)]
(2)下面代码将两个 RDD 的元素进行配对:
// 创建RDD val rdd1 = sc.makeRDD(List(1, 2, 3, 4, 5)) val rdd2 = sc.makeRDD(List(4, 5, 6, 7, 8)) // 将两个RDD的元素进行配对 val rdd3 = rdd1.zip(rdd2) // 打印结果 rdd3.collect().foreach(println)
全部评论(0)