Spark Streaming Scala:仅在滑动窗口结束时保存到文本文件

时间:2016-01-11 10:03:55

标签: scala apache-spark spark-streaming

我正在开发scala的火花流媒体应用程序,现在我已经完成了我的第一个版本,我希望提高性能。

我的火花应用程序目前正在打印每个批次的一些重要警报,这意味着我在几秒钟内生成了新的文本文件,而我更喜欢如果执行计算但写入文件仅在我的滑动窗口到期时发生,该范围在10分钟的范围内。

感兴趣的rdd的一个例子如下:

val s = events.flatMap(_.split("\n")) //split block into lines of single json events
              .map(toMyObject) //convert raw json to MyObject
              .filter(checkCondition) //filter events based on condition
              .map(x => (x._1,1L)) //count alerts based on area
              .reduceByKeyAndWindow(_ + _, _ - _, Minutes(window_length), Seconds(sliding_interval), 2) //count alerts per area
              .repartition(1)
              .saveAsTextFiles("alerts")

1 个答案:

答案 0 :(得分:0)

正如我们在评论中所讨论的:实现非重叠窗口幻灯片的持续时间应与窗口持续时间相同。

即。在上面的示例中,窗口持续时间为10分钟,如果幻灯片持续时间也设置为10分钟 - 它将每10分钟生成一次文件,包括计算10分钟内所有数据。