Frage Fügen Sie einem Dataframe eine neue Spalte hinzu. Neue Spalte Ich möchte, dass es ein UUID-Generator ist


Ich möchte eine neue Spalte zu einem Dataframe hinzufügen, einem UUID-Generator.

Der UUID-Wert sieht ungefähr so ​​aus 21534cf7-cff9-482a-a3a8-9e7244240da7

Meine Forschung:

Ich habe es versucht withColumn Methode in Funken.

val DF2 = DF1.withColumn("newcolname", DF1("existingcolname" + 1)

Also DF2 wird zusätzliche Spalte mit haben newcolname In allen Zeilen wurde 1 hinzugefügt.

Durch meine Anforderung möchte ich eine neue Spalte haben, die die UUID erzeugen kann.


5
2018-05-14 20:40


Ursprung


Antworten:


Sie sollten so etwas versuchen:

val sc: SparkContext = ...
val sqlContext = new SQLContext(sc)

import sqlContext.implicits._

val generateUUID = udf(() => UUID.randomUUID().toString)
val df1 = Seq(("id1", 1), ("id2", 4), ("id3", 5)).toDF("id", "value")
val df2 = df1.withColumn("UUID", generateUUID())

df1.show()
df2.show()

Ausgabe wird sein:

+---+-----+
| id|value|
+---+-----+
|id1|    1|
|id2|    4|
|id3|    5|
+---+-----+

+---+-----+--------------------+
| id|value|                UUID|
+---+-----+--------------------+
|id1|    1|f0cfd0e2-fbbe-40f...|
|id2|    4|ec8db8b9-70db-46f...|
|id3|    5|e0e91292-1d90-45a...|
+---+-----+--------------------+

14
2018-05-14 21:31



So haben wir es in Java gemacht, wir hatten ein Spaltendatum und wollten eine weitere Spalte mit Monat hinzufügen.

Dataset<Row> newData = data.withColumn("month", month((unix_timestamp(col("date"), "MM/dd/yyyy")).cast("timestamp")));

Sie können eine ähnliche Technik verwenden, um eine Spalte hinzuzufügen.

Dataset<Row> newData1 = newData.withColumn("uuid", lit(UUID.randomUUID().toString()));

Prost !


1
2018-05-08 16:59