Используя Spark, как добавить столбец в конце - PullRequest
0 голосов
/ 11 ноября 2018

Ниже мой набор данных с использованием искры. Я хочу добавить еще один столбец в конце с именем Level. На основании зарплаты будет определяться уровень

`sal >= 1000 && sal <=2000  = Level 1
sal > 2000 && sal <= 3000  = Level 2 
sal >3000 && sal <=4000 = Level 3

+-----+-------+----+----+
|empid|empName| sal|dept|
+-----+-------+----+----+
|  100|  EMP1 |1000|IT  |
|  101|  EMP2 |2500|ITES|
|  102|  EMP3 |3000|BPO |
|  104|  EMP4 |4000|ENGG|
+-----+-------+----+----+`

Выход

+-----+-------+----+----+-----+
|empid|empName| sal|dept|Level|
+-----+-------+----+----+-----+
|  100|  EMP1 |1000|IT  |Level 1|
|  101|  EMP2 |2500|ITES|Level 2|
|  102|  EMP3 |3000|BPO |Level 3|
|  104|  EMP4 |4000|ENGG|Level 3|
+-----+-------+----+----+-----+

Я написал ниже код -

case class mySchema(empid: Int, empName: String, sal: Int, post: String) import spark.implicits._ val rdd1 = spark.read.csv("file:///E:/dev/tools/SampleData/emp.csv").select($"_c0".cast("integer").as("empid"),$"_c1".cast("string").as("empName"),$"_c2".cast("integer").as("sal"),$"_c3".cast("string").as("post")) val df1 = rdd1.toDF() val dfTods = df1.as[mySchema] dfTods.createTempView("Employee") val resDS = spark.sql("""select *<br> case when (sal === 1000) then 'ASE' when (sal === 2000) then 'SE' else 'SSE'<br> end as level from Employee""")

Исключение в потоке "main" org.apache.spark.sql.catalyst.parser.ParseException: несоответствующий вход «когда» ожидает (строка 2, позиция 70)

== SQL ==
select  *   case when (sal === 1000) then 'ASE' 
----------------------------------------------------------------------^^^
                                                                 when (sal === 2000) then 'SE' 
                                                                 else 'SSE'  
                                                                 end as  level  from Employee                        

1 Ответ

0 голосов
/ 11 ноября 2018
select  
*,  
case   
when (sal >=1000 and sal <= 2000) then 'Level 1'  
when (sal > 2000 and sal <= 3000) then 'Level 2'  
when (sal > 3000 and sal <= 4000) then 'Level 3'
end   
as level  
from Employee
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...