首页 > 解决方案 > rdd.map() 没有调用指定的函数

问题描述

我有一个包含 3 个项目的数据集。我使用每个项目调用一个函数,map()但从未调用该函数。

object MyProgram {

  val events = Seq("A","B","C")

  def main(args: Array[String]): Unit = {
    val spark = SparkSession
      .builder
      .appName("MyApp")
      .config("spark.master", "local")
      .getOrCreate()

    import spark.implicits._

    val eventsDS = events.toDS()
    System.out.println("Before")
    val tempDS = eventsDS.rdd.map(x => doSomething(x))
    System.out.println("After")

  }

  def doSomething(event: String) : Unit = {
    System.out.println("Do Something!")
  }
}

输出:

标签: scalaapache-spark

解决方案


map被懒惰地评估,你需要调用一个actionlikeforeach来执行计算:

eventsDS.foreach(doSomething _)

推荐阅读