2016-09-26 38 views
0

如何在SparkSQL 2.0中使用DataFrames和Scala語言實現這樣的SQL查詢?我已經閱讀了很多帖子,但其中沒有一篇似乎能夠實現我所需要的內容,或者如果您能指出我的內容,就可以做到。這裏的問題:如何在SparkSQL2.0上執行類似的UPDATE-WHERE語句?

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 

是否有執行上述查詢的方式,使用地圖,比賽的情況下,UDF的,或者 - 說明?我需要在value字段中存儲的值不是順序的,所以我具有特定的值。我也知道,在處理DataFrame時,不可能修改不可變數據。我沒有可分享的代碼,因爲我無法使其工作,也無法再現任何錯誤。

回答

1

是的,你可以,這很簡單。您可以使用whenotherwise

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

非常感謝!問題已經解決了 ! – Emiliano

相關問題