Spark Scala:按小时或分钟计算两列的 DateDiff

2024-05-10

我在数据框中有两个时间戳列,我想获取它们的分钟差异,或者小时差异。目前我可以通过四舍五入获得日差

val df2 = df1.withColumn("time", datediff(df1("ts1"), df1("ts2")))

但是,当我查看文档页面时https://issues.apache.org/jira/browse/SPARK-8185 https://issues.apache.org/jira/browse/SPARK-8185我没有看到任何额外的参数来更改单位。我应该为此使用它们的不同功能吗?


您可以通过以下方式获得几秒钟的差异

import org.apache.spark.sql.functions._
val diff_secs_col = col("ts1").cast("long") - col("ts2").cast("long")

然后你可以做一些数学运算来得到你想要的单位。例如:

val df2 = df1
  .withColumn( "diff_secs", diff_secs_col )
  .withColumn( "diff_mins", diff_secs_col / 60D )
  .withColumn( "diff_hrs",  diff_secs_col / 3600D )
  .withColumn( "diff_days", diff_secs_col / (24D * 3600D) )

或者,在 pyspark 中:

from pyspark.sql.functions import *
diff_secs_col = col("ts1").cast("long") - col("ts2").cast("long")

df2 = df1 \
  .withColumn( "diff_secs", diff_secs_col ) \
  .withColumn( "diff_mins", diff_secs_col / 60D ) \
  .withColumn( "diff_hrs",  diff_secs_col / 3600D ) \
  .withColumn( "diff_days", diff_secs_col / (24D * 3600D) )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark Scala:按小时或分钟计算两列的 DateDiff 的相关文章

随机推荐