У меня есть DF, состоящий из двух столбцов, у которых есть время, и я хочу вычислить дельта-время между ними.
следующий DF является образцом исходного DF:
+-------------------+-------------------+
| time| time2|
+-------------------+-------------------+
|2017-01-13 00:17:21|2017-01-13 14:08:03|
|2017-01-13 14:08:08|2017-01-13 14:08:03|
|2017-01-13 14:08:59|2017-01-13 14:08:03|
|2017-01-13 04:21:42|2017-01-13 14:08:03|
+-------------------+-------------------+
схема ДФ выглядит следующим образом:
root
|-- time: string (nullable = true)
|-- time2: string (nullable = true)
Я использовал следующий метод:
import pyspark.sql.types as typ
import pyspark.sql.functions as fn
from pyspark.sql.functions import udf
import datetime
from time import mktime, strptime
def diffdates(t1, t2):
#Date format: %Y-%m-%d %H:%M:%S
delta= ((mktime(strptime(t1,"%Y-%m-%d %H:%M:%S")) - mktime(strptime(t2, "%Y-%m-%d %H:%M:%S"))))
return (delta)
dt = udf(diffdates, typ.IntegerType())
Time_Diff = df.withColumn('Diff',(dt(df.time,df.time2)))
Результирующий новый столбец имеет нулевое значение следующим образом:
+-------------------+-------------------+----+
| time| time2|Diff|
+-------------------+-------------------+----+
|2017-01-13 00:17:21|2017-01-13 14:08:03|null|
|2017-01-13 14:08:08|2017-01-13 14:08:03|null|
|2017-01-13 14:08:59|2017-01-13 14:08:03|null|
|2017-01-13 04:21:42|2017-01-13 14:08:03|null|
+-------------------+-------------------+----+
что мне делать?