Spark 相當於「IF then ELSE」
簡介:
簡介:Spark Data操縱數據的強大方法。一種常見的操作涉及根據變數值有條件地應用轉換。了解 Spark 中相當於 SQL 中的「IF then ELSE」語句對於此類任務至關重要。
問題:TypeError: when() takes exactly 2 arguments (3 given)
使用者正在嘗試將新欄位新增至基於條件規則的 Spark DataFrame。但是,當嘗試在多個條件下使用 F.when 函數時,他們會遇到 TypeError。
答案:(when(col("iris_class") == 'Iris-setosa', 0) .when(col("iris_class") == 'Iris-versicolor', 1) .otherwise(2))發生錯誤是因為 F.when Spark 中的函數需要兩個參數:一個條件和滿足條件時傳回的值。使用者的程式碼包含一個附加參數,即另一個 F.when 條件,這是不正確的語法。 Spark 中使用F.when 的「IF Then ELSE」等效項的正確語法是:
(when(col("iris_class") == 'Iris-setosa', 0) .otherwise(when(col("iris_class") == 'Iris-versicolor', 1) .otherwise(2)))or:
CASE WHEN (iris_class = 'Iris-setosa') THEN 0 ELSE CASE WHEN (iris_class = 'Iris-versicolor') THEN 1 ELSE 2 END END第一個語法使用巢狀的F.when 條件,而第二個語法使用F.otherwise 函數。 等效的 SQL 語句將是 CASE 表達式:
IF(condition, if-true, if-false)Spark 也支援 Hive IF 條件語法,但僅限於支援 Hive 的原始 SQL:
以上是如何在 Spark DataFrames 中實作「IF THEN ELSE」邏輯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!