Spark Streaming 数据摄取:窗口操作与外部数据源使用
1. 窗口操作进行限时计算
在某些场景中,我们可能需要进行限时计算,例如找出过去一小时内交易最频繁的前五种证券。在 Spark Streaming 里,这类计算可通过窗口操作来完成。
窗口操作的主要原理是在小批量数据的滑动窗口上进行操作。每个窗口化的 DStream 由窗口持续时间和窗口滑动间隔(即窗口数据重新计算的频率)决定,这两个参数都是小批量持续时间的倍数。
1.1 解决最终任务
假设窗口持续时间为一小时,滑动间隔与小批量持续时间相同(这里是五秒),因为我们希望在每个小批量中都报告交易最频繁的前五种证券以及其他指标。
为了创建窗口化的 DStream,我们可以使用 reduceByKeyAndWindow 方法。以下是计算每只股票在每个窗口内交易金额的代码:
val stocksPerWindow = orders.
map(x => (x.symbol, x.amount)).window(Minutes(60))
reduceByKey((a1:Int, a2:Int) => a1+a2)
接下来,找出前五种证券的代码如下:
val topStocks = stocksPerWindow.transform(_.sortBy(_._2, false).map(_._1).
zipWithIndex.filter(
超级会员免费看
订阅专栏 解锁全文
1201

被折叠的 条评论
为什么被折叠?



