Vis*_*mdi 5 java apache-spark spark-streaming rdd dstream
在下面的代码中,似乎函数fn1和fn2以顺序方式应用于inRDD,正如我在Spark Web UI的Stages部分中看到的那样.
DstreamRDD1.foreachRDD(new VoidFunction<JavaRDD<String>>()
{
public void call(JavaRDD<String> inRDD)
{
inRDD.foreach(fn1)
inRDD.foreach(fn2)
}
}
Run Code Online (Sandbox Code Playgroud)
流媒体作业以这种方式运行时有何不同.以下函数是否在输入Dstream上并行运行?
DStreamRDD1.foreachRDD(fn1)
DStreamRDD2.foreachRDD(fn2)
Run Code Online (Sandbox Code Playgroud)
onforeach和on都会按顺序运行,因为它们是RDD输出转换,这意味着它们会导致图的具体化。Spark 中的任何一般惰性转换都不会出现这种情况,当执行图分为多个单独的阶段时,它可以并行运行。foreachRDDDStream
例如:
dStream: DStream[String] = ???
val first = dStream.filter(x => x.contains("h"))
val second = dStream.filter(x => !x.contains("h"))
first.print()
second.print()
Run Code Online (Sandbox Code Playgroud)
当您有足够的集群资源来并行运行底层阶段时,第一部分不需要顺序执行。然后,调用count,这又是一种输出转换,将导致print语句一个接一个地打印。
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |