Heim  >  Artikel  >  Backend-Entwicklung  >  Wie füge ich eine konstante Spalte zu einem Spark-DataFrame hinzu?

Wie füge ich eine konstante Spalte zu einem Spark-DataFrame hinzu?

Linda Hamilton
Linda HamiltonOriginal
2024-11-07 00:31:02383Durchsuche

How to Add a Constant Column to a Spark DataFrame?

Erstellen einer konstanten Spalte in einem Spark-DataFrame

Hinzufügen einer konstanten Spalte zu einem Spark-DataFrame mit einem beliebigen Wert, der für alle Zeilen gelten kann auf verschiedene Weise erreicht werden. Die für diesen Zweck vorgesehene Methode withColumn kann zu Fehlern führen, wenn versucht wird, einen direkten Wert als zweites Argument bereitzustellen.

Verwendung von Literalwerten (Spark 1.3)

Um dieses Problem zu beheben, verwenden Sie lit, um eine wörtliche Darstellung des gewünschten Werts zu erstellen:

from pyspark.sql.functions import lit

df.withColumn('new_column', lit(10))

Erstellen komplexer Spalten (Spark 1.4)

Für komplexere Spaltentypen B. Arrays, Strukturen oder Karten, verwenden Sie die entsprechenden Funktionen:

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

Typisierte Literale (Spark 2.2)

Spark 2.2 führt typedLit ein und bietet Unterstützung für Seq, Map und Tupel:

import org.apache.spark.sql.functions.typedLit

df.withColumn("some_array", typedLit(Seq(1, 2, 3)))

Verwendung benutzerdefinierter Funktionen (UDFs)

Alternativ können Sie eine UDF erstellen, die den konstanten Wert zurückgibt:

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

Hinweis:

Diese Methoden können auch verwendet werden, um konstante Argumente an UDFs oder SQL-Funktionen zu übergeben.

Das obige ist der detaillierte Inhalt vonWie füge ich eine konstante Spalte zu einem Spark-DataFrame hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn