【发布时间】:2020-06-20 05:33:56
【问题描述】:
我有一个配置单元表,其中有列(id、dept、salary)我正在使用 spark SQL 在该表上应用一些转换。
即如果部门是 HR 那么salary=salary+100,如果部门是 IT 那么salary=salary+0 并且基于部门取薪水的总和。光纤通道
输入数据
+----+-----------+--------+
| id | dept | salary |
+----+-----------+--------+
| 1 | HR | 100 |
| 2 | operation | 200 |
| 3 | tech | 300 |
| 4 | IT | 400 |
| 1 | HR | 500 |
+----+-----------+--------+
预期输出
+----+-----------+--------+
| id | dept | salary |
+----+-----------+--------+
| 1 | HR | 800 |
| 2 | operation | 300 |
| 3 | tech | 300 |
| 4 | IT | 400 |
+----+-----------+--------+
我已经编写了下面的代码,但它在 spark sql 中不起作用。
spark.sql("select CASE WHEN dept = 'HR' THEN 'sum(salary+100)',when dept = 'IT' THEN 'sum(salary+0)' ELSE 'salary' END AS salary from emp group by dept").show
但输入不匹配:问题。请帮助我应该如何实现这一点。
【问题讨论】:
-
salary+0对你有意义吗? -
operation的输出错误 -
@David דודו Markovitz 不,我需要根据部门增加薪水。(salary+0)只是一个例子。
标签: sql apache-spark hive apache-spark-sql