gpt4 book ai didi

scala - 计算 Spark scala 中多列的平均值

转载 作者:行者123 更新时间:2023-12-02 08:12:15 27 4
gpt4 key购买 nike

我正在寻找一种方法来计算一些统计数据,例如使用 Scala 对 Spark 中的几个选定列进行平均。假设 data 对象是我的 Spark DataFrame,很容易只计算一列的平均值,例如

data.agg(avg("var1") as "mean var1").show

此外,我们可以很容易地计算出由一些其他列的值交叉制表的平均值,例如:

data.groupBy("category").agg(avg("var1") as "mean_var1").show

但是我们如何计算 DataFrame 中列列表的平均值呢?我试过运行这样的东西,但没有成功:

scala> data.select("var1", "var2").mean().show
<console>:44: error: value mean is not a member of org.apache.spark.sql.DataFrame
data.select("var1", "var2").mean().show
^

最佳答案

这是你需要做的

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

import spark.implicits._
val df1 = Seq((1,2,3), (3,4,5), (1,2,4)).toDF("A", "B", "C")

data.select(data.columns.map(mean(_)): _*).show()

输出:

+------------------+------------------+------+
| avg(A)| avg(B)|avg(C)|
+------------------+------------------+------+
|1.6666666666666667|2.6666666666666665| 4.0|
+------------------+------------------+------+

这适用于选定的列

data.select(Seq("A", "B").map(mean(_)): _*).show()

输出:

+------------------+------------------+
| avg(A)| avg(B)|
+------------------+------------------+
|1.6666666666666667|2.6666666666666665|
+------------------+------------------+

希望这对您有所帮助!

关于scala - 计算 Spark scala 中多列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45674186/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com