将日期时间转换为unix_时间戳Scala
我需要从Spark数据帧中获取最小值并对其进行变换。 目前,我只是获取这个值并使用DateTime对其进行转换,但是,我需要使用unix_时间戳格式作为结果。那么,如何使用Scala函数或Spark函数将DateTime转换为unix_时间戳呢 以下是我当前返回DateTime的代码:将日期时间转换为unix_时间戳Scala,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我需要从Spark数据帧中获取最小值并对其进行变换。 目前,我只是获取这个值并使用DateTime对其进行转换,但是,我需要使用unix_时间戳格式作为结果。那么,如何使用Scala函数或Spark函数将DateTime转换为unix_时间戳呢 以下是我当前返回DateTime的代码: val minHour = new DateTime(df.agg(min($"event_ts")) .as[Timestamp].collect().head))
val minHour = new DateTime(df.agg(min($"event_ts"))
.as[Timestamp].collect().head))
.minusDays(5)
.withTimeAtStartOfDay())
我也尝试过使用Spark函数,但无法将时间戳切换到一天的开始时间(这可以通过使用DateTime withTimeAtStartOfDay函数实现):
date\u sub
将时间戳转换为日期,因此时间将自动切换到一天的开始
df.show
+-------------------+----------+
| event_ts|event_hour|
+-------------------+----------+
|2017-05-01 00:22:01|1493598121|
|2017-05-01 00:22:08|1493598128|
|2017-05-01 00:22:01|1493598121|
|2017-05-01 00:22:06|1493598126|
+-------------------+----------+
df.agg(
min($"event_ts").alias("min_ts")
).select(
unix_timestamp(date_sub($"min_ts", 5)).alias("min_ts_unix")
).withColumn(
"min_ts", $"min_ts_unix".cast("timestamp")
).show
+-----------+-------------------+
|min_ts_unix| min_ts|
+-----------+-------------------+
| 1493164800|2017-04-26 00:00:00|
+-----------+-------------------+
df.show
+-------------------+----------+
| event_ts|event_hour|
+-------------------+----------+
|2017-05-01 00:22:01|1493598121|
|2017-05-01 00:22:08|1493598128|
|2017-05-01 00:22:01|1493598121|
|2017-05-01 00:22:06|1493598126|
+-------------------+----------+
df.agg(
min($"event_ts").alias("min_ts")
).select(
unix_timestamp(date_sub($"min_ts", 5)).alias("min_ts_unix")
).withColumn(
"min_ts", $"min_ts_unix".cast("timestamp")
).show
+-----------+-------------------+
|min_ts_unix| min_ts|
+-----------+-------------------+
| 1493164800|2017-04-26 00:00:00|
+-----------+-------------------+