Pyspark Pypark每周事件的计算

Pyspark Pypark每周事件的计算,pyspark,pyspark-sql,Pyspark,Pyspark Sql,我试图计算一个单词每周出现的次数。也就是说,本周每个单词是否比前一周更频繁。为此,我有点被卡住了。我做了以下工作: m = sc.parallelize(["oded,12-12-2018", "oded,12-03-2018", "oded,12-12-2018", "oded,12-06-2018", "oded2,12-02-2018", "oded2,12-02-2018"]) m = m.map(lambda line: line.split(','))

我试图计算一个单词每周出现的次数。也就是说,本周每个单词是否比前一周更频繁。为此,我有点被卡住了。我做了以下工作:

m = sc.parallelize(["oded,12-12-2018", "oded,12-03-2018", "oded,12-12-2018", "oded,12-06-2018", "oded2,12-02-2018", "oded2,12-02-2018"])
        m = m.map(lambda line: line.split(','))
        weekly = m.map(lambda line: (line[0], (parse(line[1]).strftime("%V%y"))))
        s = sql.createDataFrame(daily)
        s.groupby("_1", "_2").count().sort("_2")
结果是:

+-----+----+-----+
|   _1|  _2|count|
+-----+----+-----+
|oded2|4818|    2|
| oded|4918|    2|
| oded|5018|    2|
+-----+----+-----+

我如何去获取oded:0=(2-2)和oded2:2=(2-0)

您好,您可以使用lag窗口函数,在计算上周的单词数后,查找前一周的值。对于之前没有count值的周,该值将为零,或者您可以使用na.drop()完全删除该行

from pyspark.sql.functions import lag, col,coalesce
from pyspark.sql.window import Window
w = Window().partitionBy("_1").orderBy(col("_2"))
s.select("*", lag("count").over(w).alias("prev_week")).na.fill(0).show()

完美的非常感谢。