scala - Spark:如何在 groupedData 中获取带有条件的结果集
Posted
技术标签:
【中文标题】scala - Spark:如何在 groupedData 中获取带有条件的结果集【英文标题】:scala - Spark : how to get the resultSet with condition in a groupedData 【发布时间】:2017-04-17 09:11:50 【问题描述】:有没有办法使用自己的架构到组Dataframe
?
这是产生格式的数据:
Country | Class | Name | age
US, 1,'aaa',21
US, 1,'bbb',20
BR, 2,'ccc',30
AU, 3,'ddd',20
....
我想做一些类似的事情
Country | Class 1 Students | Class 2 Students
US , 2, 0
BR , 0, 1
....
条件 1. 国家分组。 条件 2. 只获得 1 或 2 个类值
这是一个源代码..
val df = Seq(("US", 1, "AAA",19),("US", 1, "BBB",20),("KR", 2, "CCC",29),
("AU", 3, "DDD",18)).toDF("country", "class", "name","age")
df.groupBy("country").agg(count($"name") as "Cnt")
【问题讨论】:
【参考方案1】:你应该使用pivot
函数。
val df = Seq(("US", 1, "AAA",19),("US", 1, "BBB",20),("KR", 2, "CCC",29),
("AU", 3, "DDD",18)).toDF("country", "class", "name","age")
df.groupBy("country").pivot("class").agg(count($"name") as "Cnt").show
+-------+---+---+---+
|country| 1| 2| 3|
+-------+---+---+---+
| AU| 0| 0| 1|
| US| 2| 0| 0|
| KR| 0| 1| 0|
+-------+---+---+---+
【讨论】:
我找不到重命名列的方法。 val rs=df.groupBy("country").pivot("class").agg(count($"name") as "Cnt") rs.select(col("country" ),col("1").as("Class1"),col("2").as("Class2")).show()以上是关于scala - Spark:如何在 groupedData 中获取带有条件的结果集的主要内容,如果未能解决你的问题,请参考以下文章