PySpark中如何将Timestamp截断到小时并将列值存储为变量
Spark时间戳截断至小时并存储为变量
步骤1:处理Spark DataFrame中的时间戳列
用Spark的date_trunc函数把timestamp列截断到小时级别,同时保留时区信息:
from pyspark.sql import functions as F # 假设你的原始DataFrame名为df df = df.withColumn( "timestamp_hour", # 截断到小时后转为timestamp类型,保证时区信息不丢失 F.date_trunc("hour", F.col("timestamp")).cast("timestamp") )
步骤2:提取值到Python变量并格式化
用date_format指定目标输出格式,再提取第一行的值赋值给变量:
# 提取并格式化时间戳为要求的字符串格式 timestamp_hour = df.select( F.date_format( F.col("timestamp_hour"), "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" # 匹配目标格式的模板 ) ).first()[0] # 执行打印 print(timestamp_hour) # 输出结果:'2023-03-01T17:00:00.000+0000'
补充:Spark SQL实现方式
如果习惯用SQL语法,可直接编写查询语句:
SELECT date_format(date_trunc('hour', timestamp), 'yyyy-MM-dd\'T\'HH:mm:ss.SSSXXX') AS timestamp_hour FROM your_table_name
之后提取查询结果的第一行值到变量即可。
内容的提问来源于stack exchange,提问作者MMV
相关产品推荐
相关产品推荐

