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

2023-12-27

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


Spark sql 提供各种数据框功能 https://spark.apache.org/docs/1.5.0/api/java/org/apache/spark/sql/functions.html如平均值、平均值、总和等。

您只需使用以下方法应用于数据框列Spark SQL 列 http://org.apache.spark.sql.Column

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 

现在你可以在你的filterDF上应用聚合函数

filterDF.agg(stdv, value_mean).show
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark Scala - 如何迭代数据帧中的行,并将计算值添加为数据帧的新列 的相关文章

随机推荐