spark中嵌套的flatMap



在下面给定的代码中,我通过并行化List(1,2,3,4(来声明和rdd。我想做的是将List(1,2,4(附加到上面rdd的每个元素上。我通过使用嵌套的flatMap函数闪烁来实现这一点,它可以为RDD的每个元素返回多个值

val rand6=sc.parallelize(List(1,2,3,4))
val bv=sc.broadcast(List(5,6,7,8))
rand6.flatMap(s=>{
val c=List(1,2,3,4)
val a=List(s,c)
val b=a.flatMap(r=>r)
b
})

但我得到了以下错误

command-1095314872161512:74: error: type mismatch;
found   : Any
required: scala.collection.GenTraversableOnce[?]
val b=a.flatMap(r=>r)
^

是语法的问题,或者我们不应该以这种方式使用flatMaps

如果有人能帮助我理解这个,那将是非常有帮助的

尽可能在scala代码中添加类型根据您的问题描述,得出以下解决方案

import org.apache.spark.broadcast.Broadcast
import org.apache.spark.rdd.RDD
object RandomDF {
def main(args: Array[String]): Unit = {
val spark = Constant.getSparkSess
val sc = spark.sparkContext
val rand6 : RDD[Int] =sc.parallelize(List(1,2,3,4))
val bv: Broadcast[List[Int]] =sc.broadcast(List(5,6,7,8))
val output = rand6.map( (s : Int)=>{
val c : List[Int] =List(1,2,3,4)
val a = s :: c
//      val b = a.flatMap(r=>r)
//      b
a
}).collect().toList
println(output)
}
}