2017-06-04 9 views
1

単語の毎週の出現を計算しようとしています。つまり、今週は各週が前週よりも頻繁に出るかどうかです。それのために、私は固執しています。私は、次のことをやった:PySparkの毎週発生の計算

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| 
+-----+----+-----+ 

は、どのように私は行くことができるとオデッドます:0 =(2 - 2)とoded2:2 =(2 - 0)

ありがとうございます!

答えて

2

こんにちは、先週の値を見つけるために、遅れ窓関数を使用することができます。 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() 
+0

パーフェクト!ありがとうございました! – Himberjack

関連する問題