Hinzufügen einer konstanten Spalte zu einem Spark-DataFrame
Beim Versuch, mithilfe von withColumn und einem konstanten Wert eine neue Spalte zu einem DataFrame hinzuzufügen, Benutzer Aufgrund nicht übereinstimmender Datentypen kann ein Fehler auftreten.
Lösung:
Spark 2.2:
Verwenden Sie typedLit für die direkte Zuweisung konstante Werte verschiedener Typen:
import org.apache.spark.sql.functions.typedLit df.withColumn("some_array", typedLit(Seq(1, 2, 3)))
Spark 1.3 :
Verwenden Sie lit, um einen Literalwert zu erstellen:
from pyspark.sql.functions import lit df.withColumn('new_column', lit(10))
Spark 1.4:
Verwenden Sie für komplexe Spalten Funktionsblöcke wie Array, struct und create_map:
from pyspark.sql.functions import array, struct, create_map df.withColumn("some_array", array(lit(1), lit(2), lit(3)))
In Scala:
import org.apache.spark.sql.functions.{array, lit, map, struct} df.withColumn("new_column", lit(10)) df.withColumn("map", map(lit("key1"), lit(1), lit("key2"), lit(2)))
Für Strukturen , verwenden Sie einen Alias für jedes Feld oder übertragen Sie ihn auf das gesamte Objekt, um Namen bereitzustellen:
df.withColumn( "some_struct", struct(lit("foo").alias("x"), lit(1).alias("y"), lit(0.3).alias("z")) )
Hinweis:
Diese Konstrukte können auch verwendet werden, um konstante Argumente an zu übergeben UDFs oder SQL-Funktionen.
Das obige ist der detaillierte Inhalt vonWie füge ich einem Spark-DataFrame eine konstante Spalte hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!