是否有一種乾淨的方式來計算Spark Dataframe上的移動百分位數。在Spark Dataframe上移動百分位數
我有一個巨大的數據框,我每隔15分鐘彙總一次,我想計算每個部分的百分位數。
df.groupBy(window(col("date").cast("timestamp"), "15 minutes"))
.agg(sum("session"),mean("session"),percentile_approx("session", 0.5))
.show()
錯誤:未發現:價值percentile_approx
所以我要像計算總和與平均值基本的東西,但我需要計算中位數和其他一些百分點。
在Spark 2.1中有這樣做的有效方法嗎?
因爲在這裏,沒有平均,percentile_approx,似乎API中實現Percentile_approx功能。
我看到這個問題已經被問到,但答案並不是都同意一個獨特的解決方案。對我來說這很模糊......所以我想知道在2017年8月,是否有一個好的和有效的解決方案。
而當我瀏覽15分鐘的窗口時,我想知道如果僅僅用硬計算它不會工作而不是近似值?
非常感謝您的關注,
祝大家下午好! PS:Scala或PySpark我不介意,兩者都會更大!
示例代碼中的「window」是什麼?你想要窗口函數(和滑動窗口)還是非重疊窗口(groupBy)? –
感謝您的回答,並花時間回答我的問題!我有歷史數據,我想每1分鐘彙總一次。每分鐘,我有數百條記錄,並在每個滑動窗口(每分鐘)我需要計算中位數等...所以我想知道什麼是乾淨的方式來有效地做到這一點 – tricky
好吧,但在這種情況下窗口並不真正「滑動」......因爲對於滑動窗口,您需要窗口函數。AFAIK滑動意味着你的情況:對於每個記錄,採取「周圍」15分鐘的數據並計算聚合 –