【发布时间】:2020-09-17 08:31:27
【问题描述】:
我有一个包含 row_id 的庞大数据集,因此我知道 row_id 是单调递增的,并且数据分区是按此 row_id 排序的。
现在我想使用 lag() 函数移动一些列:
window = sql.Window.partitionBy().orderBy('row_id')
df = df.withColumn('shifted_my_value', F.lag(df.my_value).over(window))
但是,pyspark 并不知道数据已经按 row_id 排序,并且想要分析/重新洗牌整个数据集(尽管我知道这将是一个无用的)。
有没有办法告诉 spark 我的数据已经按 row_id 排序,它应该只移动 my_values 中的值而不尝试洗牌。
【问题讨论】: