gpt4 book ai didi

apache-spark - 在pyspark中获取窗口上的最大值

转载 作者:行者123 更新时间:2023-12-04 08:53:46 25 4
gpt4 key购买 nike

我在 pyspark 的特定窗口中获取最大值。但是从该方法返回的不是预期的。

这是我的代码:

test = spark.createDataFrame(DataFrame({'grp': ['a', 'a', 'b', 'b'], 'val': [2, 3, 3, 4]}))
win = Window.partitionBy('grp').orderBy('val')
test = test.withColumn('row_number', F.row_number().over(win))
test = test.withColumn('max_row_number', F.max('row_number').over(win))
display(test)

输出是:

enter image description here

我预计它会为“a”组和“b”组返回 2,但没有。

有人对这个问题有想法吗?非常感谢!

最佳答案

这里的问题出在 max 函数的框架上。如果您在执行操作时对窗口进行排序,那么框架将是 Window.unboundedPreceding, Window.currentRow。因此,您可以定义另一个窗口来放置订单(因为 max 函数不需要它):

w2 = Window.partitionBy('grp')

您可以在 PySpark 中看到 docs :

Note When ordering is not defined, an unbounded window frame (rowFrame, unboundedPreceding, unboundedFollowing) is used by default. When ordering is defined, a growing window frame (rangeFrame, unboundedPreceding, currentRow) is used by default.

关于apache-spark - 在pyspark中获取窗口上的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63951725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com