You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 19:06:09