首頁  >  文章  >  後端開發  >  如何使用「when()」在 Spark 中實作 IF-THEN-ELSE 邏輯?

如何使用「when()」在 Spark 中實作 IF-THEN-ELSE 邏輯?

Susan Sarandon
Susan Sarandon原創
2024-11-18 07:09:02547瀏覽

How to Implement IF-THEN-ELSE Logic in Spark Using `when()`?

IF then ELSE 的Spark 等效項

在此範例中,我們的目標是將一個新列「Class」是根據現有分類列「iris_class」的值,該欄位有三個不同的

但是,提供的程式碼遇到錯誤:

iris_spark_df = iris_spark.withColumn(
    "Class", 
   F.when(iris_spark.iris_class == 'Iris-setosa', 0, F.when(iris_spark.iris_class == 'Iris-versicolor',1)).otherwise(2))

錯誤訊息表示Spark 中的when() 函數僅接受兩個參數,與提供的程式碼相反。

為了解決這個問題,使用when()函數的正確結構是任一:

(when(col("iris_class") == 'Iris-setosa', 0)
.when(col("iris_class") == 'Iris-versicolor', 1)
.otherwise(2))

(when(col("iris_class") == 'Iris-setosa', 0)
    .otherwise(when(col("iris_class") == 'Iris-versicolor', 1)
        .otherwise(2)))

這些表達式相當於SQL CASE 語句相當於SQL CASE 語句:

CASE 
    WHEN (iris_class = 'Iris-setosa') THEN 0
    WHEN (iris_class = 'Iris-versicolor') THEN 1 
    ELSE 2
END

CASE WHEN (iris_class = 'Iris-setosa') THEN 0 
     ELSE CASE WHEN (iris_class = 'Iris-versicolor') THEN 1 
               ELSE 2 
          END 
END

Spark中when()的一般語法是:

when(condition, value).when(...)

when(condition, value).otherwise(...)

或或或或注意,Spark 中不直接支援Hive IF 條件式IF(condition, if-true, if-false),只能是在具有Hive 支援的原始SQL 中使用。

以上是如何使用「when()」在 Spark 中實作 IF-THEN-ELSE 邏輯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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