【发布时间】:2017-03-28 06:11:35
【问题描述】:
我目前正在努力解决以下问题:
z-score 定义为:
z = (x-u)/sd
(其中 x 是单个值,u 是窗口的平均值,sd 是窗口的标准差)
我可以在窗口上计算 u 和 sd,但不知道如何将每个单独的 x 值“结转”到结果数据帧,以便计算每个值的 z 分数,这就是我得到了这么多远:
val df = spark.readStream
.format("org.apache.bahir.sql.streaming.mqtt.MQTTStreamSourceProvider")
.option("topic", "topic/path")
.load("tcp://localhost:1883")
val counter = df.groupBy(
window($"timestamp", "2 seconds"),
$"value")
.agg($"value",avg($"value")+stddev($"value"))
val query = counter.writeStream
.outputMode("complete")
.format("console")
.start()
我希望 .agg($"value",avg($"value")+stddev($"value")) 中的 $"value" 会将源数据帧中的每个值传递到结果中,但事实并非如此
有什么想法吗?
【问题讨论】:
-
知道为什么这个问题被否决了吗?我仍然被同样的问题困住......
标签: scala apache-spark statistics time-series spark-streaming