PySpark在Azure Databricks中创建含timestamp时间列的DataFrame
PySpark构造符合要求的DataFrame实现代码
前提说明:Spark原生不存在仅含时间部分的timestamp类型,所有timestamp类型默认都会绑定日期信息。因此我们采用绑定固定虚拟日期(1970-01-01,UNIX纪元起始日)+ 保留完整时间精度的方案,不会影响后续时间计算、精度匹配以及时间部分的提取使用。
完整可运行代码
# 导入依赖的PySpark类和函数 from pyspark.sql.types import StructType, StructField, StringType, TimestampType from pyspark.sql.functions import to_timestamp # 1. 自定义明确的表结构,匹配需求的字段类型 custom_schema = StructType([ StructField("TimePeriod", StringType(), nullable=False), StructField("StartTimeStr", StringType(), nullable=False), StructField("EndTimeStr", StringType(), nullable=False) ]) # 2. 定义原始行数据 raw_data = [ ("00:00:00:00 -> 15:59:59:59", "00:00:00:00", "15:59:59:59"), ("16:00:00:00 -> 18:59:59:59", "16:00:00:00", "18:59:59:59") ] # 3. 基于原始数据和schema生成临时DF,再转换时间列格式 df = spark.createDataFrame(raw_data, schema=custom_schema) \ .withColumn("StartTimeStamp", to_timestamp("StartTimeStr", format="HH:mm:ss:SS")) \ .withColumn("EndTimeStamp", to_timestamp("EndTimeStr", format="HH:mm:ss:SS")) \ .drop("StartTimeStr", "EndTimeStr") # 删除临时的字符串时间列 # 验证结果(可直接运行查看输出) df.printSchema() df.show(truncate=False)
补充说明
- 全程使用PySpark原生API实现,无Pandas依赖,适配Azure Databricks运行环境
- 时间转换时指定格式
HH:mm:ss:SS,完整保留毫秒精度,生成的StartTimeStamp、EndTimeStamp均为标准TimestampType类型 - 如果后续需要提取纯时间字符串使用,可以调用
date_format函数实现:from pyspark.sql.functions import date_format # 示例:提取StartTimeStamp的纯时间部分,格式为HH:mm:ss:SS df.withColumn("StartTimeStr", date_format("StartTimeStamp", "HH:mm:ss:SS")).show()
内容的提问来源于stack exchange,提问作者Ian Carrick
相关产品推荐
相关产品推荐

