PySpark 1.5 按数据帧中的新列分组



我正在尝试使用 groupBy 和 sum(使用 PySpark 1.5)在 Spark 数据帧中创建一个新列("newaggCol")。 我的数字列已转换为"长整型"或"双精度型"。用于形成 groupBy 的列是字符串和时间戳。我的代码如下

df= df.withColumn("newaggCol",(df.groupBy([df.strCol,df.tsCol]).sum(df.longCol)))

我对错误的回溯正在接近该行。并指出:

ValueError: Cannot convert column into bool: please use '&' for 'and',     '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.

我觉得我一定是调用函数不正确?

使用 SQL 聚合是不可能的,但您可以使用窗口函数轻松获得所需的结果

import sys
from pyspark.sql.window import Window
from pyspark.sql.functions import sum as sum_
w = (Window()
    .partitionBy(df.strCol, df.tsCol)
    .rowsBetween(Window.unboundedPreceding, Window.unboundedFollowing))
df.withColumn("newaggCol", sum_(df.longCol).over(w))

相关内容

  • 没有找到相关文章

最新更新