Comment ajouter des colonnes constantes aux Spark DataFrames ?

DDD
Libérer: 2024-11-08 20:22:02
original
459 Les gens l'ont consulté

How do I add constant columns to Spark DataFrames?

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'
Copier après la connexion

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
Copier après la connexion
df.withColumn('new_column', lit(10))
Copier après la connexion

Colonnes complexes

Pour des valeurs constantes plus complexes, telles que des tableaux ou des structures, vous pouvez utiliser ce qui suit fonctions :

  • array
  • struct
  • create_map

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)))
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal