如何在spark-scala中计算持续时间



我有从epoch格式转换的2列:

val df2 = df1.withColumn("event_end_ts", from_unixtime($"end_ts"/1000, "yyyy/MM/dd hh:mm:ss:ss"))
.withColumn("event_start_ts", from_unixtime($"start_ts"/1000, "yyyy/MM/dd hh:mm:ss:ss"))

,它给了我这个:

+----------------------+----------------------+ 
|event_end_ts          |event_start_ts        |
+----------------------+----------------------+ 
|2022/05/24 03:49:01:01|2022/05/24 03:48:50:50| 
|2022/05/24 03:49:00:00|2022/05/24 03:48:51:51| 
|2022/05/24 03:50:03:03|2022/05/24 03:49:05:05|
+----------------------+----------------------+

现在,我试图得到2列的持续时间。我已经尝试过了,但它给出了一个空结果:

df2.withColumn("time_diff", (to_timestamp($"event_end_ts") - to_timestamp($"event_start_ts"))/3600)

您需要首先将它们强制转换为LongType,如下所示:

df2.withColumn("time_diff", (to_timestamp($"event_end_ts").cast(LongType) - to_timestamp($"event_start_ts").cast(LongType))/3600)

相关内容

  • 没有找到相关文章

最新更新