是否有一个变量来标识火花流中的每个批处理数据



在火花流中,数据根据批处理间隔进行处理。 如果我将批处理间隔设置为 5 秒( val ssc = new StreamingContext(sc, Seconds(5)) ):

1s~5s is first batch of data
6s~10s is second batch of data
10s~15s is third batch of data
……

是否有一个变量来标识火花流中的每个批处理数据? 如果有这样的变量:

var batchID = 0

我可以获取 batchID 的值来识别哪批数据,或者我可以按 batchID 过滤数据,例如:window(……).filter(_.batchId == 1)

或者有没有办法区分每批数据?

您可以使用类型为 (rdd: RDD[T], time: Time) => UnitforeachRDD。时间是数据流中RDD的标记,这意味着在两个连续批次的两次连续调用中,时间参数将相差一个批次间隔持续时间。

您可以在此处找到用于foreachRDD的 API:https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.streaming.dstream.DStream

如果您需要为特定的时间间隔选择一些RDD,您可以简单地使用 slice 函数,该函数也在上面的链接中指定。

最新更新