Maison  >  Article  >  développement back-end  >  Comment ajouter une colonne constante à un Spark DataFrame ?

Comment ajouter une colonne constante à un Spark DataFrame ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-07 00:31:02383parcourir

How to Add a Constant Column to a Spark DataFrame?

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!

Déclaration:
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