如何在SparkSQL2.0上执行类似的UPDATE-WHERE语句?

时间:2016-09-26 20:56:18

标签: sql scala apache-spark apache-spark-sql spark-dataframe

如何使用DataFrames和Scala语言在SparkSQL 2.0中实现这样的SQL查询?我已经阅读了很多帖子,但似乎没有一个帖子能达到我需要的水平,或者如果你能指出一个,那就可以了。这就是问题所在:

UPDATE table SET value = 100 WHERE id = 2
UPDATE table SET value = 70 WHERE id = 4
.....

假设您有一个包含两列的表table,如下所示:

id  | value 
--- | ---
  1 | 1
  2 | null
  3 | 3
  4 | null
  5 | 5

有没有办法使用map,match Cases,UDF或if-else语句来实现上述查询?我需要存储在value字段中的值不是连续的,所以我有特定的值放在那里。我也意识到在处理DataFrame时无法修改不可变数据。我没有要分享的代码,因为我无法让它工作,也不会重现任何错误。

1 个答案:

答案 0 :(得分:1)

是的,你可以,非常简单。您可以使用whenotherwise

val pf = df.select($"id", when($"id" === 2, lit(100)).otherwise(when($"id" === 4, lit(70)).otherwise($"value")).as("value"))