Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在ApacheSpark流媒体中计算数据帧API的z分数?_Scala_Apache Spark_Statistics_Time Series_Spark Streaming - Fatal编程技术网

Scala 如何在ApacheSpark流媒体中计算数据帧API的z分数?

Scala 如何在ApacheSpark流媒体中计算数据帧API的z分数?,scala,apache-spark,statistics,time-series,spark-streaming,Scala,Apache Spark,Statistics,Time Series,Spark Streaming,我目前正在努力解决以下问题: z分数定义为: z=(x-u)/sd (其中x为单个值,u为窗口的平均值,sd为窗口的标准偏差) 我可以在窗口上计算u和sd,但不知道如何将每个单独的x值“结转”到结果数据帧,以便计算每个值的z分数,这是我到目前为止取得的成绩: val df = spark.readStream .format("org.apache.bahir.sql.streaming.mqtt.MQTTStreamSourceProvider") .option("to

我目前正在努力解决以下问题:

z分数定义为:

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”能够将每个值从源数据帧传递到结果,但事实并非如此


有什么想法吗?

我现在找到了答案-答案是这是不可能的,因为groupBy返回一个org.apache.spark.sql.GroupedData对象,它只支持额外的聚合,当然不允许访问分组行的单个值。这很好地解释了这一点,

你知道为什么这个问题被否决了吗?我仍然被困在同一个问题上。。。