Ajout de colonnes constantes aux Spark DataFrames
Lorsque vous travaillez avec Spark DataFrames, il existe des scénarios dans lesquels il peut être nécessaire d'ajouter une colonne constante avec un valeur fixe à chaque ligne. Cependant, une erreur courante consiste à utiliser directement withColumn, qui est destiné à ajouter des colonnes calculées.
Erreur avec withColumn
Si vous essayez d'ajouter une colonne constante directement en utilisant withColumn, vous rencontrerez une erreur similaire à :
AttributeError: 'int' object has no attribute 'alias'
En effet, withColumn attend un objet Column comme le deuxième argument, qui représente une expression calculée. Une valeur constante, telle qu'un entier, n'est pas une colonne.
Solution
Pour ajouter correctement une colonne constante, utilisez la fonction lit pour créer une valeur littérale. Cette fonction prend la valeur constante comme argument et renvoie un objet Column :
from pyspark.sql.functions import lit
df.withColumn('new_column', lit(10))
Colonnes complexes
Pour des valeurs constantes plus complexes, telles que des tableaux ou des structures, vous pouvez utiliser ce qui suit fonctions :
Exemple :
from pyspark.sql.functions import array, struct, create_map df.withColumn("some_array", array(lit(1), lit(2), lit(3))) df.withColumn("some_struct", struct(lit("foo"), lit(1), lit(.3))) df.withColumn("some_map", create_map(lit("key1"), lit(1), lit("key2"), lit(2)))
Alternative Approches
Dans les versions Spark 2.2 et supérieures, la fonction typedLit peut également être utilisée pour créer des colonnes constantes pour les types de données pris en charge tels que les séquences, les cartes et les tuples.
Une autre alternative est pour utiliser un UDF, bien que cela soit plus lent que d'utiliser les fonctions intégrées mentionnées ci-dessus.
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!