Spark:计算列值

时间:2017-10-21 12:47:46

标签: scala apache-spark dataframe percentage

我正在努力提高我的Spark Scala技能,我有这个案例,我找不到操作的方法,所以请指教!

我有原始数据,如下图所示:

enter image description here

我想计算count列的每个结果的百分比。例如。最后一个错误值是64,所有列值中的百分比是64。请注意,我使用sqlContext将原始数据作为Dataframes读取: 这是我的代码:

    val df1 = df.groupBy(" Code")
.agg(sum("count").alias("sum"), mean("count")
.multiply(100)
.cast("integer").alias("percentag‌​e")) 

我想要与此类似的结果:

enter image description here

提前致谢!

1 个答案:

答案 0 :(得分:10)

使用agg和窗口函数:

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

df
  .groupBy("code")
  .agg(sum("count").alias("count"))
  .withColumn("fraction", col("count") /  sum("count").over())