Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Dataframe-从时间戳列减去分钟_Scala_Datetime_Apache Spark_Dataframe_Jodatime - Fatal编程技术网

Scala Dataframe-从时间戳列减去分钟

Scala 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))//不起作用 有什么建议吗? 谢

环境: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))
//不起作用

有什么建议吗? 谢谢

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