2

ApacheSparkでデータフレームAPIのzスコアを計算する方法stucured streaming?私は現在、以下に苦しんだ

Z =(徐)/ SD

xが個々の値である

(Uの平均値:

Zスコアは以下のように定義されますwindowとsdはウィンドウの標準偏差)

私はウィンドウ上でuとsdを計算できますが、z-スコアを計算するために結果のデータフレームに個々のx値を "持ち越す"方法はわかりませんすべての価値について、これまでにこれまでの距離はどれくらいですか:

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"))の$値はソースデータフレームから結果が、これは事実ではありません

アイデア?

+0

この質問が投票された理由は何ですか?私はまだ同じ問題を抱えています... –

答えて

0

私は今答えを見つけました。答えは、groupByが(もちろん)アクセスを許可しない追加の集計のみをサポートするorg.apache.spark.sql.GroupedDataオブジェクトを返すためですグループ化された行の個々の値に変換します。このpostは非常にうまく説明しています、

関連する問題