如何使用Scala计算Spark中数据框中列的开始索引和结束索引之间的行的平均值?

Posted

技术标签:

【中文标题】如何使用Scala计算Spark中数据框中列的开始索引和结束索引之间的行的平均值?【英文标题】:How to calculate the average of rows between a start index and end index of a column in a dataframe in Spark using Scala? 【发布时间】:2019-07-24 17:31:05 【问题描述】:

我有一个带有浮点类型值的列的 spark 数据框。我试图找到第 11 行到第 20 行之间的平均值。请注意,我没有尝试任何类型的移动平均线。我尝试像这样使用分区窗口 -

var avgClose= avg(priceDF("Close")).over(partitionWindow.rowsBetween(11,20))

它返回一个“org.apache.spark.sql.Column”结果。我不知道如何查看avgClose

我是 Spark 和 Scala 的新手。感谢您在获得此信息方面的帮助。

【问题讨论】:

【参考方案1】:

为您的表分配一个递增的 id。然后你可以在 id 之间做一个平均。

val df =  Seq(20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1).toDF("val1")
val dfWithId = df.withColumn("id", monotonically_increasing_id())
val avgClose= dfWithId.filter($"id" >= 11 && $"id" <= 20).agg(avg("val1"))
avgClose.show()

结果:

+---------+
|avg(val1)|
+---------+
|      5.0|
+---------+

【讨论】:

谢谢扎克!那工作得很好。我是 Spark 的新手,不知道 monotonically_increasing_id()。这将在未来的几个方面有所帮助。干杯! 完全没问题@AkdeEdge!如果您愿意,请接受这个作为答案。

以上是关于如何使用Scala计算Spark中数据框中列的开始索引和结束索引之间的行的平均值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Scala/Spark 添加不基于数据框中现有列的新列? [复制]

我可以更改 Spark 数据框中列的可空性吗?

给定列名,数据框中列的平均值

如何在spark scala数据框中更新嵌套列的xml值

计算数据框中列的汇总统计信息

spark scala数据框中所有列的值都为空