[英]How can I enumerate rows in groups with Spark/Python?
使用row_number
窗口函數:
from pyspark.sql.functions import row_number
from pyspark.sql import Window
w = Window.partitionBy("some_column").orderBy("some_other_column")
df.withColumn("rn", row_number().over(w))
您可以通過執行以下操作在rdd級別實現此目的:
rdd = sc.parallelize(['a', 'b', 'c'])
df = spark.createDataFrame(rdd.zipWithIndex())
df.show()
結果是: +---+---+ | _1| _2| +---+---+ | a| 0| | b| 1| | c| 2| +---+---+
+---+---+ | _1| _2| +---+---+ | a| 0| | b| 1| | c| 2| +---+---+
+---+---+ | _1| _2| +---+---+ | a| 0| | b| 1| | c| 2| +---+---+
如果你只需要唯一的ID,而不是真正的連續索引,你也可以使用更高效的zipWithUniqueId()
,因為在每個分區本地完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.