首頁  >  文章  >  後端開發  >  如何在 Spark DataFrames 中實作「IF THEN ELSE」邏輯?

如何在 Spark DataFrames 中實作「IF THEN ELSE」邏輯?

Patricia Arquette
Patricia Arquette原創
2024-11-19 12:06:02819瀏覽

How to Implement

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn