Filtern eines Pyspark-DataFrames mit einer SQL-ähnlichen IN-Klausel: Behebung des Syntaxfehlers
Beim Versuch, einen Pyspark-DataFrame mithilfe einer SQL- Wie bei der IN-Klausel kann es zu einem Syntaxfehler kommen, wenn die Werte der IN-Klausel nicht in einfache Anführungszeichen gesetzt werden. Um dieses Problem zu beheben, übergeben Sie die Werte explizit als Zeichenfolge in der SQL-Abfrage.
Lösung:
Anstatt die Werte direkt als Tupel anzugeben, verwenden Sie Zeichenfolgenformatierung um die Werte in die SQL-Abfrage einzubinden. Zum Beispiel:
df = sqlc.sql("SELECT * FROM my_df WHERE field1 IN {}".format(str((1, 2, 3))))
Dieser Ansatz stellt sicher, dass die Werte im Kontext der SQL-Umgebung ausgewertet und vom SQL-Parser korrekt verarbeitet werden.
Alternativer Ansatz: Verwendung des Spark DataFrame-API
Spark bietet über seine Dataframe-API auch eine bequemere Möglichkeit, DataFrames mithilfe der IN-Klausel zu filtern. Dieser Ansatz wird aufgrund seiner Einfachheit und Aussagekraft im Allgemeinen bevorzugt.
from pyspark.sql.functions import col df.where(col("field1").isin((1, 2, 3))).count()
Hier verwendet die Funktion isin() ein Tupel oder Array als Argument und prüft, ob jeder Wert in der Spalte „field1“ in der Eingabeliste vorhanden ist . Diese Methode ist sowohl prägnant als auch bietet eine Reihe leistungsstarker Datenmanipulationsoperationen.
Das obige ist der detaillierte Inhalt vonWie verwende ich die IN-Klausel richtig zum Filtern von Pyspark-DataFrames?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!