Python Pyspark:从特定值开始自动递增

Python Pyspark:从特定值开始自动递增,python,pyspark,databricks,Python,Pyspark,Databricks,我需要向我的数据帧中添加一列,该列将从500开始递增1。所以第一行是500,第二行是501等等。使用UDF是没有意义的,因为它可以在不同的worker上执行,我不知道有什么函数会将起始值作为参数。我也没有任何可以对数据帧进行排序的东西。默认情况下,行号和自动增量都从1开始。我相信我可以做到这一点,但将我的df转换为rdd并返回到df似乎是一个非常丑陋的解决方案。你知道有什么现有的函数可以帮助我在数据帧级别上解决这个问题吗 谢谢大家! 我认为可以使用从0开始的偏移量,但可以从自定义偏移量开始,向每

我需要向我的数据帧中添加一列,该列将从500开始递增1。所以第一行是500,第二行是501等等。使用UDF是没有意义的,因为它可以在不同的worker上执行,我不知道有什么函数会将起始值作为参数。我也没有任何可以对数据帧进行排序的东西。默认情况下,行号和自动增量都从1开始。我相信我可以做到这一点,但将我的df转换为rdd并返回到df似乎是一个非常丑陋的解决方案。你知道有什么现有的函数可以帮助我在数据帧级别上解决这个问题吗

谢谢大家!

我认为可以使用从0开始的偏移量,但可以从自定义偏移量开始,向每个偏移量添加一个常量值:

offset=start\u offset+单调递增的\u id()

由于
单调递增id()
不是连续的,因此可以在
单调递增id()上使用
行数()
并添加499

from pyspark.sql.window import Window

df = df.withColumn("idx", monotonically_increasing_id())
w = Window().orderBy("idx")
df.withColumn("row_num", (499 + row_number().over(w))).show()

单调递增id
不接受任何参数,只需加上500就可以了:
单调递增id()+500
谢谢,但是,单调递增id不是连续的,所以它只对前几行有效。使用不带分区的窗口可能会有问题,或者使用spark sql
spark.sql('select row_number()over(order by“idx”)作为row_num,*from df')