我有一个包含a, b
列的DataFrame,我希望使用窗口函数按a
对数据进行分区,然后为b
提供唯一索引
val window_filter = Window.partitionBy($"a").orderBy($"b".desc)
withColumn("uid", row_number().over(window_filter))
但是对于这个用例,b
的排序是不必要的,可能很耗时。如何在不订购的情况下实现这一目标?
答案 0 :(得分:1)
row_number()
不带 order by 或带 order by 常量具有非确定性行为,并且由于并行处理,可能会在每次运行中对相同的行产生不同的结果。如果按列的顺序不变,可能会发生同样的情况,行的顺序可能会因运行而异,您会得到不同的结果。