Scala Dataframe-从时间戳列减去分钟
环境:Spark 1.6;斯卡拉 这个问题很简单,但我并没有得到准确的答案。我有一个数据帧DFScala Dataframe-从时间戳列减去分钟,scala,datetime,apache-spark,dataframe,jodatime,Scala,Datetime,Apache Spark,Dataframe,Jodatime,环境:Spark 1.6;斯卡拉 这个问题很简单,但我并没有得到准确的答案。我有一个数据帧DF id | cr_date ----------------------- 1| 2017-03-17 11:12:00 ---------------------- 2|2017-03-17 15:10:00 我需要从cr_约会开始减去5分钟。我试过了 val DF2=DF.select($“cr_Date”.cast(“timestamp”).minutes(5))//不起作用 有什么建议吗? 谢
id | cr_date
-----------------------
1| 2017-03-17 11:12:00
----------------------
2|2017-03-17 15:10:00
我需要从cr_约会开始减去5分钟。我试过了
val DF2=DF.select($“cr_Date”.cast(“timestamp”).minutes(5))
//不起作用
有什么建议吗?
谢谢
spark中没有可用的minutes
方法。
上面的代码应该返回预期的结果 如果有人遇到同样的问题,我发现使用上述方法可以维持年份。例如,在应用时,我有一个时间戳为“2015-01-01 00:00:00”的数据帧:
df.select(from_unixtime(unix_timestamp(col("cr_dt")).minus(5 * 60), "YYYY-MM-dd HH:mm:ss"))
我得到的结果是“2015-12-31 23:55:00”,而我的预期结果是“2014-12-31 23:55:00”。
这似乎是因为“yyy”与“yyy”相对。进行此更改:
df.select(from_unixtime(unix_timestamp(col("cr_dt")).minus(5 * 60), "yyyy-MM-dd HH:mm:ss"))
给出了我想要的结果。谢谢@undefined_variable,您的代码正在运行,这就是我想要的for@Jhon如果您对答案感到满意,您可以同样接受它。我们如何向数据帧添加时间戳?有一个plus方法可用。。。如果您正在谈论将新列添加到dataframe,请使用withColumn方法。出于某种原因,YYYY模式表示日期所在周的年份。
df.select(from_unixtime(unix_timestamp(col("cr_dt")).minus(5 * 60), "yyyy-MM-dd HH:mm:ss"))