Ajout d'une colonne constante à un Spark DataFrame
Lorsque vous tentez d'ajouter une nouvelle colonne à un DataFrame à l'aide de withColumn et d'une valeur constante, les utilisateurs peut rencontrer une erreur en raison de données incompatibles types.
Solution :
Spark 2.2 :
Utilisez typedLit pour attribuer directement des valeurs constantes de différents types :
import org.apache.spark.sql.functions.typedLit df.withColumn("some_array", typedLit(Seq(1, 2, 3)))
Étincelle 1.3 :
Utilisez lit pour créer une valeur littérale :
from pyspark.sql.functions import lit df.withColumn('new_column', lit(10))
Spark 1.4 :
Pour les colonnes complexes, utilisez des blocs fonctionnels comme array, struct et create_map :
from pyspark.sql.functions import array, struct, create_map df.withColumn("some_array", array(lit(1), lit(2), lit(3)))
Dans Scala :
import org.apache.spark.sql.functions.{array, lit, map, struct} df.withColumn("new_column", lit(10)) df.withColumn("map", map(lit("key1"), lit(1), lit("key2"), lit(2)))
Pour les structures, utilisez un alias sur chaque champ ou lancez un cast sur l'objet entier pour fournir des noms :
df.withColumn( "some_struct", struct(lit("foo").alias("x"), lit(1).alias("y"), lit(0.3).alias("z")) )
Remarque :
Ces constructions 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!