如何使用updateStateByKey执行聚合?

时间:2016-01-31 12:10:41

标签: scala apache-spark spark-streaming

我有一个 DStream [String,(Double,Double)] ,我试图通过使用获取基于键:字符串的运行总计updateStateByKey ,但我无法弄清楚如何这样做,任何人都可以帮我解决这个问题。以下是我的代码的要点,

       a,2,1,2,2

       b,2,4,8,8

       c,5,1,5,5

       d,2,6,12,12

       e,4,3,12,12

为了更好地解释,继续使用代码,对于DStream的多个窗口,我需要输出如下,

第一个窗口 - > [(A,2,1)(B 2,4)(C,5,1)(d,2,6)(即,4,3)]

输出 - >

       a,3,4,12,14

       b,5,2,10,18

       c,6,1,6,11

       d,3,6,18,30

第二个窗口 - > [(A,3,4)(B,5,2)(C,6,1)(d,3,6)]

输出

       b,6,6,36,54

       e,2,3,6,18

第3个窗口 - > [(B,6,6)(即,2,3)]

输出

body

我一直试图让它工作,但有些我最终会在输出的前三列中得到奇怪的值,例如0,或者再次使用相同的键值对来更新总计。

我是Spark Streaming的新手,所以有人可以帮我弄清楚如何获得上述输出的逻辑吗?

P.s:我为我的解释道歉。

0 个答案:

没有答案