我目前正在添加一个带有时间戳的列到我的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的列。
有没有办法生成两个具有两个不同时间戳的新列?
由于
答案 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|
+-----+----------+----------+