Création d'une colonne constante dans un Spark DataFrame
L'ajout d'une colonne constante à un Spark DataFrame avec une valeur arbitraire qui s'applique à toutes les lignes peut être atteint de plusieurs manières. La méthode withColumn, prévue à cet effet, peut conduire à des erreurs lorsqu'on tente de fournir une valeur directe comme deuxième argument.
Utilisation de valeurs littérales (Spark 1.3)
Pour résoudre ce problème, utilisez lit pour créer une représentation littérale de la valeur souhaitée :
from pyspark.sql.functions import lit df.withColumn('new_column', lit(10))
Création de colonnes complexes (Spark 1.4)
Pour des types de colonnes plus complexes , tels que des tableaux, des structures ou des cartes, utilisez les fonctions appropriées :
from pyspark.sql.functions import array, struct df.withColumn('array_column', array(lit(1), lit(2))) df.withColumn('struct_column', struct(lit('foo'), lit(1)))
Litéraux typés (Spark 2.2)
Spark 2.2 introduit typedLit, prenant en charge Seq, Map et Tuples :
import org.apache.spark.sql.functions.typedLit df.withColumn("some_array", typedLit(Seq(1, 2, 3)))
Utilisation de fonctions définies par l'utilisateur (UDF)
Vous pouvez également créer une UDF qui renvoie la valeur constante :
from pyspark.sql import functions as F def constant_column(value): def udf(df): return [value for _ in range(df.count())] return F.udf(udf) df.withColumn('constant_column', constant_column(10))
Remarque :
Ces méthodes peuvent également être utilisées pour transmettre des arguments constants aux fonctions UDF ou SQL.
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!