Spark Streaming reduceByKeyAndWindow用于移动平均值计算

时间:2018-08-14 09:30:07

标签: apache-spark pyspark spark-streaming

我需要从运动学数据流中计算移动平均值。我将有一个滑动窗口大小并作为输入滑动,需要计算移动平均值并将其绘制出来。

我了解如何从文档中使用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()

0 个答案:

没有答案