Heim >Backend-Entwicklung >Python-Tutorial >Wie implementiert man die IF-THEN-ELSE-Logik in Spark-DataFrames?
Spark-Äquivalent von IF Then ELSE
Diese Frage befasst sich mit der Erstellung einer neuen Spalte in einem Spark-DataFrame basierend auf bedingten Regeln.
Problem mit der When-Funktion
Der bereitgestellte Code versucht, die Funktion when() zu verwenden, um eine neue Spalte mit dem Namen „Class“ basierend auf den Werten in der Spalte „iris_class“ zu erstellen. Es wird jedoch ein Fehler ausgegeben, der besagt, dass when() nur zwei Argumente akzeptiert.
Korrekte Syntax und Struktur
Die korrekte Syntax für die Funktion when() lautet:
F.when(condition1, value1).when(condition2, value2)...otherwise(otherwiseValue)
Dadurch können mehrere when()-Klauseln miteinander verkettet werden, mit einer optionalen else()-Klausel, um Fälle zu behandeln, die nicht von den when()-Klauseln abgedeckt werden.
Das entsprechende SQL für Diese Syntax wäre eine CASE-Anweisung mit mehreren WHEN-Klauseln, wie unten gezeigt:
CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 ... ELSE otherwiseValue END
Empfohlene Lösung
Daher der richtige Code zum Erstellen der „Klasse“ Spalte sollte sein:
iris_spark_df = iris_spark.withColumn( "Class", F.when(iris_spark.iris_class == 'Iris-setosa', 0) .when(iris_spark.iris_class == 'Iris-versicolor', 1) .otherwise(2) )
Alternative Syntax
Eine andere gültige Syntax zum Erreichen des gleichen Ergebnisses ist:
iris_spark_df = iris_spark.withColumn( "Class", F.when(iris_spark.iris_class == 'Iris-setosa', 0) .otherwise( F.when(iris_spark.iris_class == 'Iris-versicolor', 1) .otherwise(2) ) )
Hinweis auf Hive IF
Es ist wichtig zu beachten, dass die Hive-IF-Bedingung mit der Syntax IF(condition, if-true, if-false) in Spark nicht unterstützt wird. Diese Bedingung kann nur in unformatierten SQL-Abfragen mit Hive-Unterstützung verwendet werden.
Das obige ist der detaillierte Inhalt vonWie implementiert man die IF-THEN-ELSE-Logik in Spark-DataFrames?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!