无需订购的火花窗功能

Dea*_*nLa 6 apache-spark apache-spark-sql

我有一个DataFrame带有a, ba使用窗口函数对数据进行分区的列,然后为它们提供唯一索引b

val window_filter = Window.partitionBy($"a").orderBy($"b".desc)
withColumn("uid", row_number().over(window_filter))
Run Code Online (Sandbox Code Playgroud)

但是对于此用例,b不需要排序,这可能会很耗时。我如何不订购而实现此目标?

lef*_*oin 2

row_number()不带 order by 或带 order by 常量具有不确定性行为,并且由于并行处理,每次运行时可能会为同一行产生不同的结果。如果按列的顺序不改变,则可能会发生同样的情况,行的顺序可能因运行而异,并且您将得到不同的结果。