我正在使用spark 1.5.1,我不知道这是一个错误还是一个功能......
我正在尝试使用窗口对数据帧列求和。正常的代码应该是:
from pyspark.sql.window import Window
from pyspark.sql import functions as F
df = sqlContext.read.parquet('/tmp/my_file.parquet')
w = Window().partitionBy('id').orderBy('timestamp').rowsBetween(0, 5)
df.select(F.sum(df.v1).over(w)).show()
结果:
结果是错误的(我说这是垃圾)。但是,如果我'加载'两次......
from pyspark.sql.window import Window
from pyspark.sql import functions as F
df = sqlContext.read.parquet('/tmp/my_file.parquet')
df = sqlContext.read.parquet('/tmp/my_file.parquet') # NEW LOAD
w = Window().partitionBy('id').orderBy('timestamp').rowsBetween(0, 5)
df.select(F.sum(df.v1).over(w)).show()
新结果是正确的:
发生了什么事?