在Scala中的窗口上应用approxQuantile(Spark数据帧)

时间:2018-03-23 15:14:55

标签: scala spark-dataframe

据我所知,人们可以获得分位数     df.stat.approxQuantile

是否可以计算由某列分隔的窗口上的分位数?

因为,我希望获得特定的分位数,方法percent_rank() - 可以应用于窗口的方法 - 不能实现这一点。

1 个答案:

答案 0 :(得分:1)

如果您知道"某些列" 值,您可以执行以下操作:

for (value <- certainColumnValueList){
    val apQuantile = df.select($"certain_column" === value).stat.approxQuantile(...)
    // Do something with this result like appending it on a Map
    // as (value -> apQuantile) ...
}

如果要使用窗口,则必须定义自己的函数来计算此分位数,并将其定义为UDAF(用户定义的聚合函数)。

希望这有助于解决您的问题。