PySpark字符串转Timestamp失败求助:转换结果全为Null
解决PySpark日期字符串转Timestamp全为Null的问题
你的代码核心问题是用了lit('mydate')——这是把字符串字面量'mydate'当成要转换的值,而不是引用DataFrame中名为mydate的字段,自然无法匹配格式,返回全Null。
正确的转换代码
先确保导入必要函数:
from pyspark.sql.functions import to_timestamp, col
然后用以下两种方式之一即可:
# 方式1:用col()引用字段 wt.select(to_timestamp(col('mydate'), "dd/MMM/yyyy:HH:mm:ss")).show() # 方式2:直接传入字段名字符串(Spark会自动识别为字段) wt.select(to_timestamp('mydate', "dd/MMM/yyyy:HH:mm:ss")).show()
额外注意事项
如果你的日期字符串里的月份是英文缩写(比如Jan、Feb),还要检查Spark的本地化设置是否匹配:
- Spark 3.x及以上版本,可以直接在
to_timestamp中指定locale:wt.select(to_timestamp(col('mydate'), "dd/MMM/yyyy:HH:mm:ss", "en_US")).show() - 也可以全局设置会话的时区和locale:
spark.conf.set("spark.sql.session.timeZone", "UTC") spark.conf.set("spark.sql.locale", "en_US")
内容的提问来源于stack exchange,提问作者sclee1
相关产品推荐
相关产品推荐

