web-dev-qa-db-ja.com

Spark:列の値のパーセンテージパーセンテージをカウントします

私は自分のSpark Scalaスキルを向上させるために努力しており、操作する方法を見つけることができないこのケースを持っているので、アドバイスしてください!

下の図に示すように、元のデータがあります。

enter image description here

カウント列のすべての結果のパーセンテージを計算します。例えば。最後のエラー値は64です。64はすべての列の値のパーセンテージです。 sqlContextを使用して元のデータをデータフレームとして読み込んでいることに注意してください。これが私のコードです。

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

これに似た結果が欲しい:

enter image description here

前もって感謝します!

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())
11
user8811088