scala - Spark中的嵌套flatMap
问题描述
在下面给定的代码片段中,我通过并行化 List(1,2,3,4) 来声明和 rdd,我想要做的是将 List(1,2,3,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)
}
}
推荐阅读
- excel - How to generate random numbers with a normal distribution based on endpoints in excel?
- postgresql - How to connect to postgres user on macOS
- javascript - D3 Stacked Bar Chart: Bars Overlap
- r - Calculating rowMean ignoring 0 values
- r - Potential issue in svylogrank test results
- c++17 - 向量
..事情超出范围?它是如何工作的? - python - How to fix "ModuleNotFoundError: No module named '__builtin__' " in pycharm
- android - Flutter assets image not find
- sql - Oracle/SQL Power Bi DirectQuery 指令错误“当前不支持此本机数据库查询。”
- flutter - Flutter 刷新状态小部件