【发布时间】:2021-04-02 19:14:53
【问题描述】:
我正在运行代码脚本以获得以下结果。代码如下所示。我不明白为什么我得到了xyz1 列,如图所示。比如xyz1的第一行为什么是0。根据windows函数,它对应的组应该是前两行,但是为什么F.count(F.col("xyz")).over(w)在这里得到0。
import pyspark
from pyspark.sql import SparkSession
from pyspark.sql.window import Window
from pyspark.sql import functions as F
spark = SparkSession.builder.appName('SparkByExamples.com').getOrCreate()
list=([1,5,4],
[1,5,None],
[1,5,1],
[1,5,4],
[2,5,1],
[2,5,2],
[2,5,None],
[2,5,None],
[2,5,4])
df=spark.createDataFrame(list,['I_id','p_id','xyz'])
w= Window().partitionBy("I_id","p_id").orderBy(F.col("xyz"))
df.withColumn("xyz1",F.count(F.col("xyz")).over(w)).show()
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql window-functions