Spark sql group by 和 sum 更改列名?

Lea*_*oop 4 scala apache-spark

在这个数据框中,我找到了每个组的总工资。在 Oracle 中我会使用这段代码

select job_id,sum(salary) as "Total" from hr.employees group by job_id;
Run Code Online (Sandbox Code Playgroud)

在 Spark SQL 中尝试了相同的操作,我面临两个问题

empData.groupBy($"job_id").sum("salary").alias("Total").show()
Run Code Online (Sandbox Code Playgroud)
  1. 别名总计未显示,而是显示“总和(工资)”列
  2. 我无法使用$(我认为是 Scala SQL 语法)。遇到编译问题

     empData.groupBy($"job_id").sum($"salary").alias("Total").show()
    
    Run Code Online (Sandbox Code Playgroud)

任何想法?

vde*_*dep 9

.agg()如果您想提供别名,请使用聚合函数。这接受 scala 语法 ($" ")

empData.groupBy($"job_id").agg(sum($"salary") as "Total").show()
Run Code Online (Sandbox Code Playgroud)

如果您不想使用.agg(),也可以使用以下方式提供别名.select()

empData.groupBy($"job_id").sum("salary").select($"job_id", $"sum(salary)".alias("Total")).show()
Run Code Online (Sandbox Code Playgroud)