python - 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)
解决方案
/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>
推荐阅读
- javascript - JavaScript 获取当前分钟的开始时间
- angular - Angular / AWS Cognito 用户注册错误 - “未知错误,来自 fetch 的响应正文是:未定义”
- javascript - jsPDF,fromHTML 插件不创建 PDF 并说未定义
- apache-spark - 由于洗牌而再次持久化后,Spark unpersisting dataframe
- javascript - 无法将调试器与 react-native 应用程序连接起来?
- php - 为电子邮件取值多个复选框ajax php
- python - Django Rest Framework:仅针对特定选择显示对象
- android - Admob 奖励广告视频限制
- python - python读取csv受utf-8编码干扰
- php - echo specific array elements