Spark Streaming如何保证多个foreachRDD的顺序
Spark Streaming how to guarantee order of multiple foreachRDD
我想在 DStream 上执行一系列操作。 Action N+1 必须在 Action N 之后执行。这些实现有什么区别?
val myDStream = ???
//version 1
myDStream.foreachRDD(rdd => action 1)
myDStream.foreachRDD(rdd => action 2)
myDStream.foreachRDD(rdd => action 3)
//version 2
myDStream.foreachRDD{rdd =>
action 1
action 2
action 3
}
如果我们假设每个action
都对完整的RDD进行操作,比如action(rdd)
,那么这两个表达式在结果的顺序上应该是等价的。
在执行层面,top版本会生成三个spark job,而bottom版本只会生成一个。
我想在 DStream 上执行一系列操作。 Action N+1 必须在 Action N 之后执行。这些实现有什么区别?
val myDStream = ???
//version 1
myDStream.foreachRDD(rdd => action 1)
myDStream.foreachRDD(rdd => action 2)
myDStream.foreachRDD(rdd => action 3)
//version 2
myDStream.foreachRDD{rdd =>
action 1
action 2
action 3
}
如果我们假设每个action
都对完整的RDD进行操作,比如action(rdd)
,那么这两个表达式在结果的顺序上应该是等价的。
在执行层面,top版本会生成三个spark job,而bottom版本只会生成一个。