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
Freigeben: 2024-11-18 07:09:02
Original
624 Leute haben es durchsucht

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))
Nach dem Login kopieren

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))
Nach dem Login kopieren

oder

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

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
Nach dem Login kopieren

bzw.

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

.

Die allgemeine Syntax von when() in Spark lautet:

when(condition, value).when(...)
Nach dem Login kopieren

oder

when(condition, value).otherwise(...)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage