我正在开发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")
答案 0 :(得分:0)
正如我们在评论中所讨论的:实现非重叠窗口幻灯片的持续时间应与窗口持续时间相同。
即。在上面的示例中,窗口持续时间为10分钟,如果幻灯片持续时间也设置为10分钟 - 它将每10分钟生成一次文件,包括计算10分钟内所有数据。