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

PySpark DataFrame字符串列转日期列返回null的解决方法

解决Spark中to_date转换英文月份日期返回null的问题

核心原因

你的Spark会话默认Locale不是英文,导致无法识别Jun、May这类英文月份缩写,转换失败后返回null。

解决方案

方案1:Spark 2.4+ 直接指定Locale(推荐)

to_date函数支持第三个参数指定Locale,直接用英文Locale解析即可:

from pyspark.sql.functions import to_date, col

df = df.withColumn("DOB", to_date(col("DOB"), "yyyy-MMM-dd", "en_US"))

方案2:低版本Spark(<2.4)兼容写法

如果你的Spark版本不支持第三个参数,可通过unix_timestamp先转成时间戳,再转成日期:

from pyspark.sql.functions import unix_timestamp, to_date, col

df = df.withColumn("DOB", to_date(unix_timestamp(col("DOB"), "yyyy-MMM-dd").cast("timestamp")))

方案3:全局设置Session的Locale

也可以在创建SparkSession时全局配置英文Locale,后续所有日期解析都会生效:

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("DateConversion") \
    .config("spark.sql.locale", "en_US") \
    .getOrCreate()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:10:26