首页 > 解决方案 > PySpark 中日期时间的四舍五入时间

问题描述

我正在尝试使用 pyspark 和 udf 来计算时间。

该函数在 python 中正常工作,但在使用 pyspark 时效果不佳。

输入是:

date = Timestamp('2016-11-18 01:45:55') # type is pandas._libs.tslibs.timestamps.Timestamp

def time_feature_creation_spark(date):
    return date.round("H").hour

time_feature_creation_udf = udf(lambda x : time_feature_creation_spark(x), IntegerType())

在此处输入图像描述

然后我在提供 spark 的函数中使用它:

data = data.withColumn("hour", time_feature_creation_udf(data["date"])

错误是:

TypeError:“列”对象不可调用

预期输出只是日期时间中最接近时间的小时(例如 20h45 最接近 21h,因此返回 21)

标签: pythonapache-sparkpysparkuser-defined-functions

解决方案


/3600*3600比使用内置函数date_trunc更好的版本

import pyspark.sql.functions as F
return df.withColumn("hourly_timestamp", F.date_trunc("hour", df.timestamp))

小时以外的其他格式是

年','yyyy','yy','月','mon','mm','日','dd','小时','分钟','秒','周','季度' </p>


推荐阅读