2016-05-14 13 views
3

UUIDジェネレータであるDataframeに新しい列を追加します。新しい列をデータフレームに追加します。新しい列をUUIDジェネレータにしたい

UUID値は21534cf7-cff9-482a-a3a8-9e7244240da7

私の研究のようになります。

私はスパークでwithColumn方法で試してみました。 1は、すべての行でそれに追加して

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

だから、DF2はnewcolnameで追加の列を持つことになります。

私の必要条件は、UUIDを生成できる新しい列を作成したいということです。

答えて

11

あなたはこのような何かを試してみてください:

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

出力は次のようになります。

+---+-----+ 
| 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...| 
+---+-----+--------------------+ 
+0

こんにちはあなたのお返事は私を助けました – Sri

+0

@Sri;を聞いてよかったです)私は受け入れられたものとして私の答えをマークすることに感謝します。 –

+0

はい確かに,,, done – Sri

2

これは、我々はJavaでどうやったのか、私たちは列の日付を持っていたし、月と別の列を追加したいです。

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

同様の手法で任意の列を追加できます。

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

乾杯!

関連する問題