在 PySpark 中如何将时间戳值四舍五入到最接近的分钟?

In PySpark how to round a timestamp value to the nearest minute?

我试图在 PySpark 中对时间戳列进行四舍五入,我无法使用 date_trunc 函数,因为它只会向下舍入值..

例如:

Real Value              Expected Round Up/Down
2020-11-03 18:25:04 ->  2020-11-03 18:25:00
2020-11-03 18:21:44 ->  2020-11-03 18:22:00

我不想使用 pandas 做解决方案..

您可以将时间戳增加 30 秒,然后截断到分钟。这假设您的列名为 'time'

import pyspark.sql.functions as f

df = df.withColumn('time_minute', f.date_trunc('minute', f.col('time') + f.expr('INTERVAL 30 SECONDS')))

+-------------------+-------------------+                                       
|               time|        time_minute|
+-------------------+-------------------+
|2020-11-03 18:25:04|2020-11-03 18:25:00|
|2020-11-03 18:21:44|2020-11-03 18:22:00|
+-------------------+-------------------+