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!