Spark Scala - 如何迭代数据框中的行,并将计算值添加为数据框的新列



我有一个包含两列"日期"和"值"的数据帧,如何向数据帧添加 2 个新列"value_mean"和"value_sd",其中"value_mean"是过去 10 天(包括"日期"中指定的当前日期)的"值"平均值,"value_sd"是过去 10 天"值"的标准差?

Spark

sql提供了各种数据帧函数,如avg,mean,sum等。

只需使用 Spark SQL 列在数据帧列上应用即可

import org.apache.spark.sql.types._
import org.apache.spark.sql.functions._
import org.apache.spark.sql.Column

为标准差创建私有方法

private def stddev(col: Column): Column = sqrt(avg(col * col) - avg(col) * avg(col))

现在,您可以为平均值和标准偏差创建sql列

val value_sd: org.apache.spark.sql.Column = stddev(df.col("value")).as("value_sd")
val value_mean: org.apache.spark.sql.Column = avg(df.col("value").as("value_mean"))
筛选

过去 10 天的数据框或根据需要筛选数据框

val filterDF=df.filter("")//put your filter condition 

现在 yon 可以在您的过滤器上应用聚合函数DF

filterDF.agg(stdv, value_mean).show

相关内容

  • 没有找到相关文章

最新更新