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
Freigeben: 2024-11-17 04:18:03
Original
361 Leute haben es durchsucht

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

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

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

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

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!

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