是否有一种干净的方式来计算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分钟的数据并计算聚合 –