Spark sql group by和求和更改列名称?

时间:2018-10-11 10:07:27

标签: scala apache-spark

在此数据框中,我正在查找每个组的总工资。在Oracle中,我将使用此代码

select job_id,sum(salary) as "Total" from hr.employees group by job_id;

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

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

     empData.groupBy($"job_id").sum($"salary").alias("Total").show()
    

有什么主意吗?

1 个答案:

答案 0 :(得分:2)

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

empData.groupBy($"job_id").agg(sum($"salary") as "Total").show()

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

empData.groupBy($"job_id").sum("salary").select($"job_id", $"sum(salary)".alias("Total")).show()