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

Susan Sarandon
發布: 2024-11-18 07:09:02
原創
546 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板