Dans Spark, l'ajout d'une colonne constante à un DataFrame avec une valeur spécifique pour chaque ligne peut être réalisé en utilisant différentes méthodes.
Dans les versions Spark 1.3 et supérieures, la fonction lit est utilisée pour créer une valeur littérale, qui peut être utilisée comme deuxième argument de DataFrame.withColumn pour ajouter une colonne constante :
from pyspark.sql.functions import lit df.withColumn('new_column', lit(10))
Pour les colonnes plus complexes, des fonctions telles que array, map et struct peuvent être utilisées pour créer les valeurs de colonne souhaitées :
from pyspark.sql.functions import array, map, struct df.withColumn("some_array", array(lit(1), lit(2), lit(3))) df.withColumn("some_map", map(lit("key1"), lit(1), lit("key2"), lit(2)))
Spark 2.2 introduit la fonction typedLit, qui prend en charge la fourniture de Seq, Map et Tuples comme constantes :
import org.apache.spark.sql.functions.typedLit df.withColumn("some_array", typedLit(Seq(1, 2, 3))) df.withColumn("some_struct", typedLit(("foo", 1, 0.3)))
Comme alternative à l'utilisation de valeurs littérales , il est possible de créer une fonction définie par l'utilisateur (UDF) qui renvoie une valeur constante pour chaque ligne et d'utiliser cette UDF pour ajouter la colonne :
from pyspark.sql.functions import udf, lit def add_ten(row): return 10 add_ten_udf = udf(add_ten, IntegerType()) df.withColumn('new_column', add_ten_udf(lit(1.0)))
Remarque :
Les valeurs constantes peuvent également être transmises comme arguments aux fonctions UDF ou SQL en utilisant les mêmes constructions.
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!