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

PySpark自定义格式时间转Epoch秒报错,如何正确传参?

PySpark时间转Epoch秒数问题解决

报错原因

T是时间字符串里的普通分隔字符,但在unix_timestamp的格式参数中,未用单引号包裹的字符会被当作格式匹配符解析。而Spark底层依赖的Java SimpleDateFormat规则里,没有以T作为匹配符的定义,因此触发"Unknown pattern letter: T"错误。

正确的格式写法

需要把格式串中的固定文本T和Z用单引号包裹,明确告知解析器这是无需匹配格式的固定字符:

.withColumn("startedDateTime_ts", F.unix_timestamp("startedDateTime", "yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"))

更简洁的替代方案

你的时间字符串是标准ISO 8601格式,Spark 3.x版本可以直接用to_timestamp自动解析,再转换为long类型得到Epoch秒数:

.withColumn("startedDateTime_ts", F.to_timestamp("startedDateTime").cast("long"))

如果需要保留毫秒级精度,可以使用unix_millis函数:

.withColumn("startedDateTime_ts", F.unix_millis(F.to_timestamp("startedDateTime")))

关键规则说明

Spark的unix_timestamp格式参数完全遵循Java SimpleDateFormat规范,所有不属于格式匹配符的固定文本,都需要用单引号包裹来避免被误解析为格式规则。

内容的提问来源于stack exchange,提问作者user2913139

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:45:58