根据这里链接的火花文件

http://spark.apache.org/docs/latest/streaming-programming-guide.html#other-points-to-remember

“DStreams由输出操作延迟执行,就像RDD动作懒得执行RDD一样 . 具体来说,DStream输出操作中的RDD操作会强制处理接收到的数据 . 因此,如果你的应用程序没有任何输出操作,或者像dstream.foreachRDD()这样的输出操作没有任何RDD动作,然后什么都不会被执行 . 系统只是接收数据并丢弃它 . “

我们有一个带有映射操作的火花流应用程序,然后是DStream输出操作 . 作为文档我们在 foreachRDD 中有一个RDD操作,这是 rdd.first() 但是仍然没有发生任何事情

tempRequestsWithState is DStream 

tempRequestsWithState.foreachRDD { rdd =>
    rdd.first()

  }

但有趣的是,如果我们在foreachRDD应用程序中运行 rdd.foreach 运行完美....

tempRequestsWithState.foreachRDD { rdd =>
    rdd.foreach {

    }
  }

In our case rdd.foreach is a very slow operation and would like to avoid it as we are dealing with huge data load of 10,000 events/sec also we need the foreachRDD ..

如果我们遗漏了任何内容,并且我们可以在foreachRDD中尝试任何其他RDD操作,请告诉我们