Maison >développement back-end >Tutoriel Python >Comment ajouter des colonnes constantes dans Spark DataFrames ?

Comment ajouter des colonnes constantes dans Spark DataFrames ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-06 22:55:02491parcourir

How to Add Constant Columns in Spark DataFrames?

Ajout de colonnes constantes dans les DataFrames Spark

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.

lit et autres fonctions (Spark 1.3)

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)))

typedLit (Spark 2.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)))

Utilisation d'un UDF

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!

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