是否有变量来识别火花流中的每个批次数据?

时间:2016-02-02 06:37:24

标签: apache-spark spark-streaming

在火花流中,数据按批次间隔处理。如果我设置一个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)

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

1 个答案:

答案 0 :(得分:5)

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

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

如果您需要为特定时间间隔选择一些foreachRDD,您只需使用RDD功能,该功能也在上面的链接中指定。