合并两个 spark udf 问题

Combine two spark udf issue

我在 scala 中使用 Spark 1.6;我必须计算持续时间,即结束时间和开始时间之间的差异。 我试过这个:

val msc3 = rddsql.withColumn("Duration",($"EndTime")-($"StartTime"))

我想补充一个条件:当结束时间和开始时间相等时,持续时间应该设置为1而不是0。 怎么做?

你根本不需要 UDFs,你可以简单地使用 whenotherwise

rddsql.withColumn("Duration",when($"EndTime" === $"StartTime", 1).otherwise($"EndTime" - $"StartTime"))

您也可以使用 'Case When' 和 SparkSQL

rddsql.createOrReplaceTempView("rddsql")
spark.sql("select CASE WHEN (EndTime-StartTime = 0) THEN 1 ELSE EndTime-StartTime END as Duration from rddsql") //spark is SparkSession