【发布时间】:2021-08-31 02:39:46
【问题描述】:
我试图在 SparkSQL 中重现与 sql 中的 group by 相同的行为。
这是一个示例,说明我可以在 SQL 中而不是在 SparkSQL 中使用 SparkSQL 函数执行的操作:
输入数据集:
val input = Seq(
("Warsaw", 2016, 2),
("Toronto", 2016, 4),
("Toronto", 2017, 1),
("Toronto", 2017, 1)).toDF("city", "year", "count")
结果:
+-------+----+-----+
|city |year|count|
+-------+----+-----+
|Warsaw |2016|2 |
|Toronto|2016|4 |
|Toronto|2017|1 |
|Toronto|2017|1 |
+-------+----+-----+
然后我使用以下方法将该表注册为临时表:
input.createOrReplaceTempView("input")
然后通过使用sql
select city, year, count
from result
group by 1,2,3
这给了
+-------+----+-----+
|city |year|count|
+-------+----+-----+
|Warsaw |2016|2 |
|Toronto|2016|4 |
|Toronto|2017|1 |
+-------+----+-----+
我希望 SparkSQL 原生函数也一样,如果可能,不要使用 dropDuplicates。
提前感谢您的帮助
【问题讨论】:
标签: scala apache-spark apache-spark-sql