Heim >Backend-Entwicklung >Python-Tutorial >Wie implementiert man die IF-THEN-ELSE-Logik in Spark-DataFrames?

Wie implementiert man die IF-THEN-ELSE-Logik in Spark-DataFrames?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-17 04:18:03348Durchsuche

How to Implement IF-THEN-ELSE Logic 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!

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