按照此处链接的火花文件
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()但仍然没有发生什么
<input id="name" type="text" [ngModel]="name" (ngModelChange)="valueChange($event)"/>
valueChange(value){
}
但有趣的是,如果我们在foreachRDD应用程序中运行 rdd.foreach ,那就完美了....
tempRequestsWithState is DStream
tempRequestsWithState.foreachRDD { rdd =>
rdd.first()
}
在我们的案例中,rdd.foreach是一个非常慢的操作,并希望避免它,因为我们正在处理10,000个事件/秒的巨大数据负载,我们还需要foreachRDD ..
如果我们遗漏任何内容以及是否可以在foreachRDD内尝试任何其他RDD操作,请告知我们