如何使用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中数据框中列的开始索引和结束索引之间的行的平均值?的主要内容,如果未能解决你的问题,请参考以下文章