Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert man die „IF THEN ELSE'-Logik in Spark DataFrames?

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

Patricia Arquette
Patricia ArquetteOriginal
2024-11-19 12:06:02806Durchsuche

How to Implement

Spark-Äquivalent von „IF Then ELSE“

Einführung:

Spark DataFrame-Transformationsangebot eine leistungsstarke Möglichkeit, Daten zu manipulieren. Eine häufige Operation besteht in der bedingten Anwendung von Transformationen basierend auf Variablenwerten. Für solche Aufgaben ist es von entscheidender Bedeutung, das Spark-Äquivalent der „IF Then ELSE“-Anweisung in SQL zu verstehen.

Frage:

Ein Benutzer versucht, eine neue Spalte hinzuzufügen ein Spark DataFrame basierend auf bedingten Regeln. Sie stoßen jedoch auf einen TypeError, wenn sie versuchen, die F.when-Funktion mit mehreren Bedingungen zu verwenden.

TypeError: when() takes exactly 2 arguments (3 given)

Antwort:

Der Fehler tritt auf, weil die F.when Die Funktion in Spark erwartet genau zwei Argumente: eine Bedingung und einen Wert, der zurückgegeben wird, wenn die Bedingung erfüllt ist. Der Code des Benutzers enthält ein zusätzliches Argument, eine weitere F.when-Bedingung, die eine falsche Syntax hat.

Die korrekte Syntax für das „IF Then ELSE“-Äquivalent in Spark mit F.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)))

Die erste Syntax verwendet verschachtelte F.when-Bedingungen, während die zweite die F.otherwise-Funktion verwendet.

Eine entsprechende SQL-Anweisung wäre ein CASE-Ausdruck :

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

Spark unterstützt auch die bedingte Hive-IF-Syntax, jedoch nur in Raw-SQL mit Hive-Unterstützung:

IF(condition, if-true, if-false)

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