我需要从运动学数据流中计算移动平均值。我将有一个滑动窗口大小并作为输入滑动,需要计算移动平均值并将其绘制出来。
我了解如何从文档中使用reduceByKeyAndWindow获得滚动总和。我知道如何获取每个窗口的计数。我不清楚如何使用这些平均值。我也不确定如何在reduceByKeyAndWindow中定义一个平均计算器函数。任何帮助将不胜感激。
下面的示例代码,
def createContext():
sc = SparkContext(appName="PythonSparkStreaming")
sc.setLogLevel("ERROR")
ssc = StreamingContext(sc, 5)
ssc.setLogLeve("ERROR")
# Define kinesis Consumer
kinesisStream = KinesisUtils.createStream(ssc,
appName,
streamName,
endpointUrl,
regionName,
InitialPositionInStream.LATEST,
10)
# Count number of tweets in a batch
count_this_batch = kinesisStream.count().map(lambda x: ('Count this batch: %s' % x))
# Count by windowed time period
count_windowed = kinesisStream.countByWindow(60, 5).map(lambda x: ('Counts total (One minute rolling count): %s' % x))
sum_window = kafkaStream.reduceByKeyAndWindow(lambda x, y: x + y, lambda x, y: x - y, 60, 5)
return ssc
ssc = StreamingContext.getOrCreate('/tmp/checkpoint_v06', lambda: createContext())
ssc.start()
ssc.awaitTermination()