向数据帧添加两个时间戳

时间:2018-06-07 18:15:37

标签: scala apache-spark dataframe timestamp

我目前正在添加一个带有时间戳的列到我的Spark脚本中的现有数据帧。它看起来像这样:

val log = Source.fromArg(args, "log").read 
var added = log.withColumn("time_added", lit(unix_timestamp()))

这会在输出中生成一个名为time_added的新列,其中包含时间戳。

我现在想要添加两个时间戳(一个用于添加事物,一个用于当前时间戳)

但是,添加以下行:

var int = log.withColumn("new", lit(unix_timestamp()))

这只生成一个名为“new”的新列,但不再有名为time_added的列。

有没有办法生成两个具有两个不同时间戳的新列?

由于

1 个答案:

答案 0 :(得分:0)

此处的问题是您必须使用已添加的数据框添加新列 - added

val df = Seq("a").toDF()

val added = df.withColumn("time_added", lit(unix_timestamp()))
val addednew = added.withColumn("new", lit(unix_timestamp() + 100))

newtimeDF.show(false)

//OR

val added2 = df.withColumn("time_added", lit(unix_timestamp())).withColumn("new", lit(unix_timestamp() + 100))
addtimedf2.show(false)

+-----+----------+----------+
|value|time_added|new       |
+-----+----------+----------+
|a    |1528398456|1528398556|
+-----+----------+----------+