RDD转换算子

除了前面提到的常见RDD转换算子,还有一些其他的转换算子,以下是部分算子的介绍:

 

mapPartitions

 

与 map 类似,但它是对RDD的每个分区进行操作,传入的函数接收一个分区的迭代器,返回一个新的迭代器。它可以在处理每个分区时进行一些初始化和清理操作,比 map 更高效,特别是在需要对每个分区进行批量操作时。例如:

 

scala

val rdd = sc.parallelize(1 to 6, 2)

val result = rdd.mapPartitions(iter => {

  // 对每个分区内的元素乘以2

  val doubled = iter.map(_ * 2)

  doubled

})

result.collect()

 

 

union

 

用于合并两个RDD,生成一个包含两个RDD中所有元素的新RDD。两个RDD的类型必须相同。例如:

 

scala

val rdd1 = sc.parallelize(1 to 3)

val rdd2 = sc.parallelize(4 to 6)

val unionRDD = rdd1.union(rdd2)

unionRDD.collect()

 

 

intersection

 

返回两个RDD的交集,即包含同时存在于两个RDD中的元素的新RDD。例如:

 

scala

val rdd1 = sc.parallelize(Set(1, 2, 3, 4))

val rdd2 = sc.parallelize(Set(3, 4, 5, 6))

val intersectionRDD = rdd1.intersection(rdd2)

intersectionRDD.collect()

 

 

distinct

 

对RDD中的元素进行去重,返回一个包含唯一元素的新

你可能感兴趣的:(spark)