【发布时间】:2021-05-24 23:11:06
【问题描述】:
def isSmallerScore(value:Int): Boolean ={
val const = 200
if(value < const) true else false
}
val rdd = sc.parallelize(Seq(("Java", 100), ("Python", 200), ("Scala", 300)))
val result1: RDD[(String, Int)] = rdd.filter(x => isSmallerScore(x._2))
val result2: RDD[(String, Int)] = rdd.filter(x => !isSmallerScore(x._2))
从上面使用过滤器的代码中,我创建了两个 RDD。一个是较小的分数大小,另一个 RDD 是较高的分数。 为了把它分开,我做了两次过滤操作。
是否可以在单个过滤器操作中创建?如何减少另一个过滤器操作以找出结果( result1 或 result2 )
【问题讨论】:
-
This post 说“不可能从一次转换中产生多个 RDD”
-
你的意思是不可能多次避免同一个动作(isSmallerScore)?
标签: scala apache-spark rdd