在spark Dataframe

时间:2017-10-23 22:35:19

标签: sql scala apache-spark dataframe

Spark Dataframe包含一个包含2列的表: 状态,类别。

Status has values----'y' and 'n'
Category has values -'a', 'b' and 'c'

如何查找状态百分比' y'在spark(Scala)中的每个类别? 我能够做到这一点。

df.groupBy("category").agg(count("*"))
df.filter(col("status")==="y").groupBy("category").count()

之后合并任何东西都会给我带来错误

2 个答案:

答案 0 :(得分:0)

val dfN = df.filter(col("status").equalTo("y"))

enter image description here

val dfSum = dfN.groupBy("category").agg(count("status").as("Sum"))
val numSum = num.first()(0).toString.toInt

val dfResult = dfSum.select(col("category"), lit(col("Sum") * 100 / numSum).as("percentage"))

enter image description here

答案 1 :(得分:0)

GroupByaggregation应足以找到每个count的{​​{1}}个CategoryStatus函数可用于查找每个Window的总sum。最后,您可以通过Category进行必要的filter

进行计算
Status

我希望答案很有帮助