Heim >Backend-Entwicklung >Python-Tutorial >Wie implementiert man die IF-THEN-ELSE-Logik in Spark mit „when()'?

Wie implementiert man die IF-THEN-ELSE-Logik in Spark mit „when()'?

Susan Sarandon
Susan SarandonOriginal
2024-11-18 07:09:02629Durchsuche

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

Spark-Äquivalent von IF Then ELSE

In diesem Beispiel möchten wir dem DataFrame „iris_spark“ eine neue Spalte „Class“ hinzufügen basierend auf den Werten einer vorhandenen kategorialen Spalte „iris_class“, die drei verschiedene Kategorien hat.

Der bereitgestellte Code, Es tritt jedoch ein Fehler auf:

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))

Die Fehlermeldung weist darauf hin, dass die Funktion when() in Spark im Gegensatz zum bereitgestellten Code nur zwei Argumente akzeptiert.

Um dieses Problem zu beheben, muss die Die richtige Struktur für die Verwendung der Funktion when() ist entweder:

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

oder

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

Diese Ausdrücke entsprechen SQL CASE-Anweisungen:

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

bzw.

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

.

Die allgemeine Syntax von when() in Spark lautet:

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

oder

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

Beachten Sie, dass der Hive-IF-Bedingungsausdruck IF(condition, if-true, if-false) wird in Spark nicht direkt unterstützt und kann nur in unformatiertem SQL mit Hive-Unterstützung verwendet werden.

Das obige ist der detaillierte Inhalt vonWie implementiert man die IF-THEN-ELSE-Logik in Spark mit „when()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn