Apache spark 用于移动平均线计算的Spark Streaming Reduce ByKeyandWindow

Apache spark 用于移动平均线计算的Spark Streaming Reduce ByKeyandWindow,apache-spark,pyspark,spark-streaming,Apache Spark,Pyspark,Spark Streaming,我需要根据运动数据流计算移动平均值。我将有一个滑动窗口大小和幻灯片作为输入,需要计算移动平均值并绘制它 我了解如何使用文档中的reduceByKeyAndWindow来获得滚动总和。我也知道如何获得每个窗口的计数。我不清楚如何使用这些来获得平均值。我也不知道如何在ReduceByKeyAnd窗口中定义平均计算器函数。任何帮助都将不胜感激 下面是示例代码 def createContext(): sc = SparkContext(appName="PythonSparkStreaming

我需要根据运动数据流计算移动平均值。我将有一个滑动窗口大小和幻灯片作为输入,需要计算移动平均值并绘制它

我了解如何使用文档中的reduceByKeyAndWindow来获得滚动总和。我也知道如何获得每个窗口的计数。我不清楚如何使用这些来获得平均值。我也不知道如何在ReduceByKeyAnd窗口中定义平均计算器函数。任何帮助都将不胜感激

下面是示例代码

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()