Heim > Artikel > Backend-Entwicklung > Wie implementiert man die „IF THEN ELSE'-Logik in Spark DataFrames?
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!