Filtrer un DataFrame Pyspark avec une clause IN de type SQL : résoudre l'erreur de syntaxe
Lors de la tentative de filtrage d'un DataFrame Pyspark à l'aide d'un SQL- comme pour la clause IN, vous pouvez rencontrer une erreur de syntaxe si les valeurs de la clause IN ne sont pas placées entre guillemets simples. Pour résoudre ce problème, transmettez explicitement les valeurs sous forme de chaîne dans la requête SQL.
Solution :
Au lieu de spécifier les valeurs directement sous forme de tuple, utilisez le formatage de chaîne pour incorporer les valeurs dans la requête SQL. Par exemple :
df = sqlc.sql("SELECT * FROM my_df WHERE field1 IN {}".format(str((1, 2, 3))))
Cette approche garantit que les valeurs sont évaluées dans le contexte de l'environnement SQL et correctement gérées par l'analyseur SQL.
Approche alternative : utilisation de Spark API DataFrame
Spark fournit également un moyen plus pratique de filtrer les DataFrames à l'aide de la clause IN via son API Dataframe. Cette approche est généralement préférée pour sa simplicité et son expressivité.
from pyspark.sql.functions import col df.where(col("field1").isin((1, 2, 3))).count()
Ici, la fonction isin() prend un tuple ou un tableau comme argument et vérifie si chaque valeur de la colonne field1 est présente dans la liste d'entrée. . Cette méthode est à la fois concise et offre une gamme d'opérations puissantes de manipulation de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!