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

How can I perform a similar UPDATE-WHERE statement on SparkSQL2.0?

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

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

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

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

有没有办法使用映射、匹配案例、UDF 或 if-else 语句来实现上述查询?我需要存储在 value 字段中的值不是连续的,因此我有特定的值要放在那里。我也知道在处理数据帧时无法修改 immutable 数据。我没有代码可以分享,因为我无法让它工作,也无法重现任何错误。

可以,很简单。您可以使用 whenotherwise.

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