【问题标题】:Spark scala reduce multiple filtering possible on RDD?Spark scala减少了RDD上可能的多重过滤?
【发布时间】: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


【解决方案1】:

它不是像 Informatica BDM、Talend、Pentaho 等的 ETL。您可以在其中以图形方式创建多个并行运行的管道(分支)。

你需要cacherdd 并过滤两次才能得到2个RDD。

【讨论】:

    猜你喜欢
    • 2016-12-05
    • 2018-09-14
    • 2015-06-27
    • 1970-01-01
    • 2017-06-26
    • 2016-11-27
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多